以编程方式生成 Google 地图标记 (API v3)
-
28-09-2019 - |
题
是否可以在 Google 中以编程方式生成标记?例如,我有一个服务和位置数据库,我想使用 PHP 将其绘制在 Google 地图上。
使用 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。
其他提示
地图API要求您使用图像(而不是任意div)显示标记,因此您需要渲染图像服务器端。
一种简单的方法是使用Google Charts API呈现标记图标:http://code.google.com/apis/chart/docs/gallery/dynamic_icons.html#pins
示例输出:
我不确定其他人是否遇到这个麻烦,但我无法循环地理编码来绘制我的点,谷歌甚至认为这是对其服务的滥用。所以我的方法是在用户输入阶段而不是显示阶段对纬度/经度坐标进行地理编码和存储,从而减轻它给谷歌带来的带宽压力。
我不确定这是否有帮助,但它可能会帮助您预先编码并存储这些标记图像,而不是即时执行。正如您选择的答案一样,您依靠谷歌在页面加载时生成这些图像,也许您可能希望通过在不同阶段运行此代码并将输出与坐标存储在一起来加速您的服务你的 PHP 数据库。
干杯,
担