3

是否可以在 Google 中以编程方式生成标记?例如,我有一个服务和位置数据库,我想使用 PHP 在 Google 地图上进行绘制。

使用 Maps API v3,我创建了一个地图并使用标记和信息窗口很好地绘制了服务,但我真正想做的是在默认标记中生成数字(1、2、3、4 ......等)气泡基于从数据库中检索到的顺序。另外,我想根据数据库中的服务类型以编程方式更改标记图标的颜色。

我正在使用 PHP,所以不知道是否有脚本可以执行此操作,但我曾希望 Google 会通过 API 提供此自定义标记生成。

4

3 回答 3

5

Maps API 要求您使用图像(而不是任意 DIV)来显示标记,因此您需要在服务器端呈现图像。

一个简单的方法是使用 Google Charts API 来呈现标记图标: 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|FF0000|000000

于 2010-08-04T03:43:17.393 回答
4

让 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。

于 2010-06-21T20:35:28.217 回答
0

我不确定其他人是否有这个问题,但我无法循环地理编码来绘制我的观点,谷歌甚至认为这是对他们服务的滥用。所以我的方法是在用户输入阶段而不是显示阶段对纬度/经度坐标进行地理编码和存储,从而减轻它对谷歌的带宽压力。

我不确定这是否会有所帮助,但它可能会帮助您预先编码和存储这些标记图像,而不是即时进行。就您选择的答案而言,您在页面加载时依靠谷歌生成这些图像,也许您可​​能希望通过在不同阶段运行此代码并将输出与坐标存储在你的 PHP 数据库。

干杯,

于 2010-08-17T07:46:23.713 回答