Здравствуйте!
Пожалуйста, помогите с решением поставленной задачи.
Подключается JS API Яндекс Карт (http://api-maps.yandex.ru
Изначально инициализируется переменная addr с информацией по необходимому городу (страна, регион, город).
На основе этих данных вызывается функция геокодирования (API Яндекс Карт), которая возвращает координаты требуемого города.
ymaps.geocode(addr.country_name + ', ' + addr.region_name + ', г. ' + addr.city_name, {results: 1}).then(function(res) {
var firstGeoObject = res.geoObjects.get(0);
EFormExactAddress.Map.Create(field_id, firstGeoObject.geometry.getCoordinates(), 10);
}, function (err) {
alert(err.message);
});
Далее вызывается функция Create, которая создает карту, центром которой устанавливаются полученные координаты. На карту накладывается метка (с возможностью перемещения) с аналогичными координатами. При перемещении метки вызывается функция сохраниения новых координат SaveCoordinats.
Create: function(field_id, coords, zoom) {
var SearchControl = new ymaps.control.SearchControl({
noPlacemark: true
});
$('#map_' + field_id).empty();
EFormExactAddress.Map.Handler = new ymaps.Map('map_' + field_id, {
center: coords,
zoom: zoom
});
EFormExactAddress.Map.Handler.controls
.add(SearchControl, {left: 35, top: 5})
.add('zoomControl', {left: 5, top: 5})
.add('typeSelector')
.add('smallZoomControl', {right: 5, top: 75});
EFormExactAddress.Map.Placemark = new ymaps.Placemark(coords, {}, {preset: "twirl#houseIcon", draggable: true});
EFormExactAddress.Map.Han
EFormExactAddress.Map.Pla
var coords = this.geometry.getCoordinates();
ymaps.geocode(coords).then(function (res) {
var names = [];
res.geoObjects.each(function (obj) {
names.push(obj.properties.get('name'));
});
EFormExactAddress.SaveCoordinats(field_id, names[0], coords);
});
}, EFormExactAddress.Map.Placemark);
EFormExactAddress.Map.Handler.events.add('click', function (e) {
var coords = e.get('coordPosition');
ymaps.geocode(coords).then(function (res) {
var names = [];
res.geoObjects.each(function (obj) {
names.push(obj.properties.get('name'));
});
EFormExactAddress.SaveCoordinats(field_id, names[0], coords);
});
});
SearchControl.events.add("resultselect", function (e) {
EFormExactAddress.SaveCoordinats(field_id, SearchControl.getResultsA
});
}
},
ВОПРОС:
На карте используется контрол SearchControl.
Как сделать так, чтобы перед поиском адреса, к строке которую ввел пользователь добавлялось название города которое определено в переменной addr? Суть в том, чтобы ограничить поиск исключительно по городу, который описан в переменной addr. Мне пришла в голову только такая идея - после того как пользователь ввел в поиск адреса строку, программно добавлять к ней (текст в контроле остается неизменным) название города и уже после этого запрашивать результаты поиска. Это вообще возможно? Или существуют другие, более удачные варианты решения поставленной задачи?
Заранее спасибо за советы.