Skip to content

Instantly share code, notes, and snippets.

@metalagman
Created March 18, 2016 13:03
Show Gist options
  • Save metalagman/affdd682368c5ffa7097 to your computer and use it in GitHub Desktop.
Save metalagman/affdd682368c5ffa7097 to your computer and use it in GitHub Desktop.
ymaps.ready(init);
var myMap, myPlaceMark;
function init() {
myMap = new ymaps.Map("map", {
center: [<?=$model->latitude?>, <?=$model->longitude?>],
zoom: <?=$city->defaultZoom?>,
minZoom: <?=$city->minZoom?>,
maxZoom: <?=$city->maxZoom?>,
controls: ['searchControl', 'typeSelector', 'zoomControl', 'geolocationControl']
});
var searchControl = myMap.controls.get('searchControl');
searchControl.options.set('noPlacemark', true);
searchControl.events.add('resultshow', function (e) {
var geoObjectsArray = searchControl.getResultsArray();
if (geoObjectsArray.length) {
var searchResult = geoObjectsArray[e.get('index')];
updateUi(searchResult);
}
}, this);
myPlaceMark = new ymaps.Placemark([<?=$model->latitude?>, <?=$model->longitude?>], {
iconContent: '<?= $model->shortAddress ?>'
}, {
preset: 'islands#darkgreenStretchyIcon',
draggable: true
});
myMap.geoObjects.add(myPlaceMark);
myPlaceMark.events.add('dragend', function () {
getAddress(myPlaceMark.geometry.getCoordinates());
});
myMap.events.add('click', function (e) {
var coords = e.get('coords');
updatePlaceMark(coords);
});
function updatePlaceMark(coords) {
myPlaceMark.geometry.setCoordinates(coords);
getAddress(coords);
}
function getAddress(coords) {
myPlaceMark.properties.set('iconContent', 'поиск...');
ymaps.geocode(coords).then(function (res) {
var firstGeoObject = res.geoObjects.get(0);
updateUi(firstGeoObject);
});
}
function updateUi(geoObject) {
myPlaceMark.properties.set({
iconContent: geoObject.properties.get('name')
});
var c = geoObject.geometry.getCoordinates();
myPlaceMark.geometry.setCoordinates(c);
// form update
$("#offer-address").val(geoObject.properties.get('text'));
$("#offer-shortaddress").val(geoObject.properties.get('name'));
$("#offer-latitude").val(c[0]);
$("#offer-longitude").val(c[1]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment