Клуб API Карт

Массив меток в Геокодировании

Пост в архиве.

Подскажите как мне усовершенствовать код

для того, чтобы отображать результат ни одного геокодирования а всех!?

function initialize()
{
var loc;
loc = '';//"Москва, Земляной вал, 50";

// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(document.getElementById("YMapsID")
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
// Добавление элементов управления
map.addControl(new YMaps.Zoom()
map.enableScrollZoom(

// Создание метки
var geocoder = new YMaps.Geocoder(loc);
YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder)
{
var geoCoords = geocoder.get(0).getGeoPoint(),
geoPlacemark = new YMaps.Placemark(geoCoords);
map.addOverlay(geoPlacemark);
map.setCenter(geoCoords, 10)
}
}

 

Дело в том, что у меня есть отдельное событие...для него создаётся всё, а потом выводится на карте

но так как таких событий много, хочется выводить на карту все одновременно!?

подскажите, пожалуйста

 

или лучше все адреса хранить в отдельном месте, а далее оттуда все адреса помещать в массив и выводить как просто метки (без кодирования, при этом хранить адреса в формате долготы и широты) !?

16 комментариев

для пользователей лучше если вы будуте хранить координаты

так как геокодирование это лишний запрос на сервер, азначит траффик и время.

 

Можно прогеокодировать все адреса из базы за один раз используя HTTP-геокодер

"Получение координат для списка адресов"

спасибо ) если будут вопросы, я к вам ещё обращусь ) 

Очень помогли, получилось геокодировать и записать в Базу Данных, теперь я хотел спросить

как правильно вывести этот массив в виде меток на карту!?

вот пример программы

 

со 2 пунктом более менее разобрался )

а с 1 не могу

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

var locations = [

"35.55,56.7",

"36.66,56.8",

"37.55,57.9"

];

// Создание группы объектов и добавление ее на карту

var group = new YMaps.GeoObjectCollection();

YMaps.jQuery.each(locations, function(index, location) {

   group.add(new YMaps.Placemark(YMaps.GeoPoint.fromString(location)));

});

map.addOverlay(group);

С помощью "Получение координат для списка адресов"

я создал в базе данных ещё строку coords

где и сохраняются

 

оттуда я извлекаю с помощью 

но он берёт только последний )

 

 

хотелось бы узнать как обращение сделать динамическим

то есть к примеру

 

var locations = [

"35.55,56.7",

"36.66,56.8",

"37.55,57.9"

];

 

перечислять я не могу )

locations я написал для примера

 

я не знаю откуда конкретно вы берете данные

их можно получить ajax-ом или распечатать на страницу напрямую из php

я делаю напрямую из php

 

 // Создание группы объектов и добавление ее на карту

 

            var group = new YMaps.GeoObjectCollection();

 

            group.add(createPlacemark(new YMaps.GeoPoint()));

 

            map.addOverlay(group);

 

и он видит только последний, что неудивительно ) я просто слаб в программировании, мне наверное, надо как-то организовать цикл!?

да

вам надо распечатать все координаты из php в javascript-массив 

а потом в javascript-цикле проитерироваться по нему, добавляя каждый его элемент в группу,

что собственно я написал вам выше

проблема в том, что количество переменных из php мне неизвестно, оно изменяется, добавляется новый и т.п.

поэтому записать в JavaScript я не могу

или я ошибаюсь!?

что за количество переменных?

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

далее по вашемук совету я провёл геокодирование адресов, передавая яндексу все адреса и поулчая обратно в базу данных колонку coords

Далее я хочу вывести на карту массив этих coords )

вот в чём вся проблема )

ну распечатайте его с помощью php-цикла в js-массив

а не подскажите, где можно прочитать про это более подробно!?

про php я обычно на php.net читаю