Программно генерировать маркеры Google Maps (API v3) - PullRequest
3 голосов
/ 22 июня 2010

Можно ли программно генерировать маркеры в Google? Например, у меня есть база данных служб и мест, которые я хочу нанести на карту Google с помощью PHP.

Используя API Карт v3, я создал карту и правильно нарисовал сервисы, используя маркеры и информационные окна, но я действительно хочу создать числа (1,2,3,4 ... и т. Д.) В маркер по умолчанию пузырится в зависимости от порядка их получения из БД. Кроме того, я бы хотел программно изменить цвет значка маркера в зависимости от типа сервиса в базе данных.

Я использую PHP, поэтому не знаю, есть ли сценарий для этого, но я надеялся, что Google обеспечит генерацию этого пользовательского маркера через API.

Ответы [ 3 ]

5 голосов
/ 04 августа 2010

API Карт требует, чтобы вы использовали изображение (а не произвольный DIV) для отображения маркеров, поэтому вам потребуется визуализировать серверную часть изображений.

Простой способ сделать это - использовать Google Charts API для отображения значков маркеров: http://code.google.com/apis/chart/docs/gallery/dynamic_icons.html#pins

Пример вывода: alt text

Генерируется с: https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=C|FF0000|000000

4 голосов
/ 22 июня 2010

Сделайте, чтобы 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, который, вероятно, будет напоминать (и при условии, что ваша карта является глобальной, называемой 'map'):

<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.

0 голосов
/ 17 августа 2010

Я не уверен, что у кого-то еще была такая проблема, но я не мог зациклить геокод для отображения своих точек, и Google даже посчитал это злоупотреблением их услугами.Поэтому мой метод заключался в том, чтобы геокодировать и сохранять координаты широты / долготы на этапе ввода пользователя, а не на этапе отображения, уменьшая нагрузку на полосу пропускания, которую он создает в Google.

Я не уверен, поможет ли это, но, возможно, поможет вам предварительно кодировать и сохранять эти изображения маркеров вместо того, чтобы делать это на лету.Как и в случае с выбранным вами ответом, вы полагаетесь на то, что Google создает эти изображения во время загрузки страницы, возможно, вы захотите ускорить работу вашего сервиса, запустив этот код на другом этапе и сохранив выходные данные с координатами вВаша база данных PHP.

Приветствия,

Дан

...