интересует шестерка
к примеру есть тип материала клиника, в каждой клинике cck-поле адрес
допустим есть у меня 10 клиник, хочу вывести на 1 карту, пример тут http://api.yandex.ru/maps/doc/jsapi/2.x/examples/collections.html
то есть надо из каждой ноды определенного типа (клиника) извлечь адрес и кинуть в массив, ну или в цикле сразу присвоить куда надо
код карты
// Как только будет загружен API и готов DOM, выполняем инициализацию
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
center: [55.76, 37.67],
zoom: 10
}),
// Определяем границы карты: координаты левого верхнего и правого нижнего ее углов.
bounds = myMap.getBounds(),
myPlacemark,
// Создаем экземпляр класса коллекции геообъектов.
myCollection = new ymaps.GeoObjectCollection();
// Создаем 10 меток с произвольными координатами (в области просмотра карты).
for (var i = 0; i < 10; i++) {
// Задаем произвольные координаты.
var point = getRandomCoordinates(bounds[0][0], bounds[1][0], bounds[0][1], bounds[1][1]);
// Создаем метку с заданными координатами.
myPlacemark = new ymaps.Placemark(point);
// Добавляем метку в коллекцию.
myCollection.add(myPlacemark);
}
// Теперь добавим коллекцию геообъектов на карту.
myMap.geoObjects.add(myCollection);
}
// Функция, генерирующая координаты метки случайным образом
function getRandomCoordinates (maxLatitude, minLatitude, maxLongitude, minLongitude) {
return [Math.random() * (maxLatitude - minLatitude) + minLatitude, Math.random() * (maxLongitude - minLongitude) + minLongitude];
}
</script>
то есть чуток изменить цикл for и каждый раз за ход цикла присвоить var point адрес из cck-поля, предположительно тут несколько строк php кода, не поможет ли кто?
Комментарии
пардон, или хотя бы просто цикл извлечения адресов, забыл тут же еще геокодер придется прилепить, адреса же будут типа: Москва, ул. Нахимова, 37
пока что набросал по этим инструкциям http://xandeadx.ru/blog/drupal/88
<?php
$result = db_query("SELECT nid FROM {content_type_firm}");
$nids = array();
while ($row = db_fetch_object($result)) {
$nids[] = $row->nid;
$title = db_result(db_query("SELECT field_firm_adr_value FROM {content_type_firm} WHERE nid = %d", $row->nid));
print $title.'
';
}
print '
';
print_r($nids);
?>
итак, имеется результат, клиника, в нодах адрес
все клиники выводятся геокодером на одну карту
<?php<!-- Контейнер под карту -->
<div id="test-map" style="width:600px;height:400px"></div>
<!-- Подключение библиотеки карты -->
<script type="text/javascript" src="http://api-maps.yandex.ru/1.1/index.xml?key=AJCkq08BAAAAjXQzCwIA1yCl4lBkZVg_hnNss3U8_wp0s_UAAAAAAAAAAADQz_VHLnRyT9mOcQCxqLJi8rYCyA==&modules=plainstyle"></script>
<script type="text/javascript">
var map = new YMaps.Map(document.getElementById("test-map")); // создаем объект карты в элементе с айди 'test-map'
map.setCenter(new YMaps.GeoPoint(37.609218,55.753559), 10); // центр карты (широта, долгота) и текущий уровень увеличения
// кнопки и шкала масштаба располагаем как хотим
map.addControl(new YMaps.Zoom(),
new YMaps.ControlPosition(
YMaps.ControlPosition.TOP_LEFT, // в какой угол поставить
new YMaps.Size (5, 5) // сколько от него отступ в пикселах (x, y)
)
);
// Включаем масштабирование скроллингом мыши
map.enableScrollZoom();
// выбор типа карты
map.addControl(new YMaps.TypeControl());
// линейка с расстоянием
map.addControl(new YMaps.ScaleLine(),
new YMaps.ControlPosition(
YMaps.ControlPosition.BOTTOM_LEFT,
new YMaps.Size (5, 20)
)
);
// Тулбар
map.addControl(new YMaps.ToolBar(),
new YMaps.ControlPosition(
YMaps.ControlPosition.TOP_LEFT,
new YMaps.Size (250, 5)
)
);
// Добавляем метку в координаты, полученные по указанному адресу
var geocoder = new YMaps.Geocoder("Москва, ул. Тверская, д. 43");
YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
var geoCoords = geocoder.get(0).getGeoPoint(),
geoPlacemark = new YMaps.Placemark(geoCoords);
geoPlacemark.name = "Гео метка имя";
geoPlacemark.description = "Гео метка описание";
map.addOverlay(geoPlacemark);
});
<?php
$result = db_query("SELECT nid FROM {content_type_clinic}");
$nids = array();
while ($row = db_fetch_object($result)) {
$nids[] = $row->nid;
$title = db_result(db_query("SELECT field_clinic_address_value FROM {content_type_clinic} WHERE nid = %d", $row->nid));
//извлекаем ноды
$title2 = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $row->nid));
?>
var geocoder = new YMaps.Geocoder("Москва, <?php print $title ?>");
YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
var geoCoords = geocoder.get(0).getGeoPoint(),
geoPlacemark = new YMaps.Placemark(geoCoords);
geoPlacemark.name = '<?php print $title2 ?>';
geoPlacemark.description = '<b>Адрес:</b> Москва, <?php print $title ?> <?php print l("подробнее..", "node/$row->nid") ?>';
map.addOverlay(geoPlacemark);
});
<?php } ?>
</script>
?>