Мартин , ничего не изменилось. Код не весь, немного перепиливаю поле от Zau4man:
instantcms.ru/addons/yandexmaps.html
При поиске объекта через форму на карте, нарушалась логика действий юзеров.
Весь код:
/templates/default/assets/fields/yandexmaps.tpl.php
Спойлер <?php if ( $field -> title ) { ?> <label for="<?php echo $field -> id ; ?> "><?php echo $field -> title ; ?> </label><?php } ?>
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<script type="text/javascript">
ymaps.ready(init);
var myMap,
myPlacemark;
<?php
$cn = empty ( $value ) ?
$field -> getOption ( 'center' ) : $value ; $zoom = $field -> getOption ( 'zoom' ) ;
?>
function init(){
myMap = new ymaps.Map("mapayandexaunicid", {
center: [<?php echo $cn ; ?> ],
zoom: <?php echo $zoom ; ?> ,
controls: ['zoomControl', 'typeSelector',"fullscreenControl" ]
});
var searchControl = new ymaps.control.SearchControl({
options: {
float: 'left',
floatIndex: 100,
noPlacemark: true
}
});
myMap.controls.add(searchControl);
<?php if ( $value ) { ?>
myPlacemark = new ymaps.Placemark([<?php echo $cn ; ?> ], {});
myMap.geoObjects.add(myPlacemark);
<?php } ?>
myMap.events.add('click', function (e) {
myMap.geoObjects.remove(myPlacemark);
var coords = e.get('coords');
myPlacemark = new ymaps.Placemark(coords[0], {});
myMap.geoObjects.add(myPlacemark);
$('#<?php echo $field -> name ; ?> ').val(coords[0]);
});
}
$(document).ready(function(){
$('.clearmap').click(function(event){
event.preventDefault();
$('#<?php echo $field -> name ; ?> ').val('');
myMap.geoObjects.remove(myPlacemark);
});
});
</script>
<div id="mapayandexaunicid" style="width: 100%; height: 350px"></div>
<?php echo html_input
( 'hidden' , $field -> element_name , $value , array ( 'id' => $field -> id ) ) ; ?> <a class="clearmap" href="#"><?php echo LANG_FIELD_YANDEXMAPS_CLEAR; ?> </a>
/system/fields/yandexmaps.php
Спойлер <?php
class fieldYandexmaps extends cmsFormField {
public $title = LANG_FIELD_YANDEXMAPS;
public $sql = 'varchar(255) NULL DEFAULT NULL' ;
public $filter_type = 'str' ;
public function getFilterInput( $value ) {
return false ;
}
public function getOptions( ) {
new fieldString
( 'center' , array ( 'title' => LANG_FIELD_YANDEXMAPS_CENTER,
'default' => '57.7801162,55.7354444'
) ) ,
new fieldString
( 'zoom' , array ( 'title' => LANG_FIELD_YANDEXMAPS_ZOOM,
'default' => '13' ,
'hint' => LANG_FIELD_YANDEXMAPS_ZOOM_HINT
) )
) ;
}
public function parse( $value ) {
if ( ! $value ) return false ;
$cn = $value ;
$zoom = $this -> getOption ( 'zoom' ) ;
$id = $this -> item [ 'id' ] ;
cmsTemplate:: getInstance ( ) -> addJS ( 'https://api-maps.yandex.ru/2.1/?lang=ru_RU' ) ;
$map = <<< MAP
<script type="text/javascript">
ymaps.ready(init);
var myMap,
myPlacemark;
function init(){
myMap = new ymaps.Map("map$id", {
center: [$cn],
zoom: $zoom,
controls: ['zoomControl', 'typeSelector',"fullscreenControl" ]
});
var searchControl = new ymaps.control.SearchControl({
options: {
float: 'left',
floatIndex: 100,
noPlacemark: true
}
});
myMap.controls.add(searchControl);
myPlacemark = new ymaps.Placemark([$cn], {});
myMap.geoObjects.add(myPlacemark);
}
</script>
<div id="map$id" style="width: 100%; height: 350px"></div>
MAP ;
return $map ;
}
}
Это уже с моими правками, видимо перемудрил что-то.