Клуб API Карт

Вывод метки по геокодеру и информация в ней.

usoliein
13 июня 2012, 14:37

Коллеги помогите, подскажите как вывести произвольный текст в балуне, который открывавется при клике на метку, в данный момент выводится текст местоположения.

Уже несколько часов олову ломаю, ничего понять не могу...

Код текущего решения  

 

 <script src="http://api-maps.yandex.ru/2.0/?load=package.full&mode=debug&lang=ru-RU" type="text/javascript"></script>

<script type="text/javascript">
// Как только будет загружен API и готов DOM, выполняем инициализацию
ymaps.ready(init);

function init () {
// Создание экземпляра карты и его привязка к контейнеру с
// заданным id ("map")
var myMap = new ymaps.Map('map', {
// При инициализации карты, обязательно нужно указать
// ее центр и коэффициент масштабирования
center: [52.734533, 103.663081],
zoom: 12,
type: "yandex#map"
});

var myGeocoder = ymaps.geocode(
// Строка с адресом, который нужно геокодировать
"Усолье-Сибирское, ул. Толбухина, д. 46", {
/* Опции поиска:
- область поиска */
boundedBy: myMap.getBounds(),
// - искать только в этой области
strictBounds: true,
// - требуемое количество результатов
results: 1

});

myGeocoder.then(
function (res) {
if (res.geoObjects.getLength()) {
// point - первый элемент коллекции найденных объектов
var point = res.geoObjects.get(0);
// Добавление полученного элемента на карту

myMap.geoObjects.add(point);
// Центрирование карты на добавленном объекте
myMap.panTo(point.geometry.getCoordinates());
}
},
// Обработка ошибки
function (error) {
alert("Возникла ошибка: " + error.message);
}
)

}
</script>

<div id="map" style="width:100%;height:250px"></div>

  

18 комментариев
Подписаться на комментарии к посту

берите из ответа геокодера только координаты найденного объекта (не добавляя его на карту), создайте новый плейсмарк по этим координатам и добавьте ему произвольный текст для балуна, добавьте плейсмарк на карту

 

Дмитрий, можете мой код изменить, а то ничего не понятно....

 

function (res) {
if (res.geoObjects.getLength()) {
// point - первый элемент коллекции найденных объектов
var point = res.geoObjects.get(0),    coords = point.geometry.getCoordinates(),    placemark = new ymaps.Placemark(coords, {    balloonContentBody : 'мой контент балуна',    iconContent : 1});
// Добавление полученного элемента на карту
myMap.geoObjects.add(placemark);
// Центрирование карты на добавленном объекте
myMap.panTo(coords);
}
},

 

Большое спасибо!

Дмитрий, можете еще подсказать код для вывода нескольких объектов по геокодеру?

res.geoObjects возвращает экземпляр ymaps.GeoObjectCollection

и значит доступны все методы

Вариантов много,

от цикла generic for от 0 до res.geoObjects.getLength()

до итератора по коллекции и метода each

Дмитрий, можете кодом написать, или конкретный пример показать? Заранее спасибо!

res.geoObjects.each(function (geoObject, index) {

var coords = geoObject.geometry.getCoordinates(),    placemark = new ymaps.Placemark(coords, {    balloonContentBody : 'мой контент балуна',    iconContent : index});
// Добавление полученного элемента на карту
myMap.geoObjects.add(placemark);

});

т.е. для разных объектов должно быть placemark1 = new ymaps.Placemark(coords, {

placemark2 = new ymaps.Placemark(coords, { 

нет это локальная переменная в обработчике each

можно оставить placemark

Дмитрий, можно как то свами по быстрой связи связаться, а то буду еще несколько дней понимать как делать, пожалуйста...

мой скайп - dimik2k

написал Вам со скайпа usolie.info сейчас жду авторизации от Вас.

Дмитрий. Прошу прощения за беспокойство. Вы не будете против если с вами попробую обсудить свой проект в скайп. Я уже тут наворотил кучу, иначе не назовёшь,  кода с кучей ошибок. Я только по основным моментам пробегусь. Долго надоедать не буду. Мне только надо вникнуть порядок работы с API . Третью неделю бьюсь, всё в одно место. Извините, что беспокою. Спасибо. 

 

я не против. dimik2k

Супер. Спасибо. Добавил. Жду ответ.

Используйте /**

 * Класс для геокодирования списка адресов или координат.

 * @class

 * @name MultiplyGeocoder

 * @param {Object} [options={}] Дефолтные опции мультигеокодера.

 */

function MultiplyGeocoder(options) {

    this._options = options || {};

}

 

/**

 * Функция множественнеого геокодирования.

 * @function

 * @requires ymaps.util.extend

 * @see http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/util.extend.xml

 * @requires ymaps.util.Promise

 * @see http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/util.Promise.xml

 * @name MultiplyGeocoder.geocode

 * @param {Array} requests Массив строк-имен топонимов и/или геометрий точек (обратное геокодирование)

 * @returns {Object} Как и в обычном геокодере, вернем объект-обещание.

 */

в клубе кто-то выкладывал. поищите.