Программно генерировать маркеры Google Maps (API V3)
-
28-09-2019 - |
Вопрос
Можно ли программно генерировать маркеры в Google? Например, у меня есть база данных услуг и местоположений, которые я хочу построить на карте Google, используя PHP.
Использование MAPS API V3, я создал карту и понизировал спецификацию мелким использованием маркеров и информации, но то, что я действительно хочу сделать, это генерировать числа (1,2,3,4 ... и т. Д.) В маркером по умолчанию Пузыри на основе порядка, которые они получают из БД. Кроме того, я хотел бы изменить цвет значка маркера программно на основе типа обслуживания в базе данных.
Я использую PHP, так что не знаю, есть ли сценарий для этого, но я надеялся, что Google предоставит этот пользовательский маркер поколения через API.
Решение
У PHP выпите код JavaScript.
Вот небольшое удобное функция JavaScript, которую я писал, чтобы добавить маркер с окном, связанным с окном.
function add_marker(opts, place) {
var marker = new google.maps.Marker(opts);
marker.place_id = place.id;
markers[place.id] = marker;
var infowindow = new google.maps.InfoWindow({
content: place.details
});
infowindows[place.id] = infowindow;
google.maps.event.addListener(marker, 'click', function() {
infowindows[marker.place_id].open(map,marker);
});
}
Поэтому после того, как заявил, что в каком-то местах JavaScripty вы бы тогда у вас есть какой-то PHP, который, вероятно, напоминает (и при условии, что ваша карта - глобальная «карта»):
<script type="text/javascript">
<?php
$count = 0;
foreach ($rowset as $row): ?>
add_marker({
position: new google.maps.LatLng(<?php echo $row->lat ?>, <?php echo $row->lng ?>),
title:<?php echo $row->title ?>,
map:map
}, { id:'<?php echo $count ?>', details:'<?php echo $row->details ?>' });
<?php
$count++;
endforeach; ?>
</script>
Я не тестировал ни одно из этого, и у меня есть какая-либо идея, как выглядит данные, но этот метод должен работать на то, что вы хотите. Я не на 100% уверен, что вы подразумеваете под заказным маркером, потому что звучит так, как будто вы уже делаете это, а не через PHP.
Другие советы
MAPS API требует, чтобы вы использовали образ (а не Arbitrary Div) для отображения маркеров, поэтому вам нужно будет отображать сторону сервера изображений.
Простой способ сделать это - использовать API Google Charts для рендеринга значков маркера:http://code.google.com/apis/chart/docs/gallery/dynamic_icons.html#pins.
Пример вывода:
Сгенерировано с: https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=c|ff000000000000.
Я не уверен, что у кого -нибудь еще возникла эта проблема, но я не мог зацикливаться на геокоде, чтобы нанести свой момент, и Google даже считает это злоупотреблением их услугами. Таким образом, мой метод состоял в том, чтобы GeoCode и сохранить координаты LAT/LONG на стадии ввода пользователя вместо этапа дисплея, сняв напряжение полосы пропускания, которое он ставит в Google.
Я не уверен, что поможет ли это, но это может помочь вам, возможно, предварительный код и хранить эти маркеры, а не делать это на лету. Когда он стоит с выбранным вами ответом, вы полагаетесь в Google, чтобы произвести эти изображения, пока ваша страница загружается, возможно, вы можете ускорить ваш сервис, запустив этот код на другом этапе и сохраняя вывод с координатами в Ваша база данных PHP.
Ваше здоровье,
Дэн