2010-06-21 39 views
3

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

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

我使用PHP,所以不知道是否有一个脚本来做到这一点,但我希望谷歌可以通过API提供这个自定义标记生成。

谢谢!

回答

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。

+0

我的问题是有关获取的谷歌地图标记图标的图形,并能够使用并坚持了一些过吧,从PHP发送。所以它更多的是关于图像处理,还是API提供了一种即时处理的方法?干杯。 – JamieNewman 2010-06-22 07:41:08

+0

我不断收到此代码的错误:Uncaught TypeError:无法读取未定义的属性'get'...它发生时点击地图图标 – msj121 2015-11-06 05:09:38

+0

修正:我已编辑的代码,问题是地图是空的,但错误很难理解,我也认为铬实际上告诉我地图确实设置;然而,使变量全局解决了这个问题。 – msj121 2015-11-06 05:16:51

5

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

一个简单的方法来做到这一点是使用谷歌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

+0

+1,因为Google的图表API允许生成的图像被浏览器缓存。 – josh3736 2010-08-04 03:49:14

+0

不幸的是,现在已被Google弃用。 – Blazemonger 2013-05-03 16:52:18

0

我不知道如果其他人有这种麻烦,但我无法循环地理编码来绘制我的观点,Google甚至认为这是对他们服务的滥用。所以我的方法是在用户输入阶段对经纬度坐标进行地理编码和存储,而不是显示阶段,从而减轻它对Google带来的带宽压力。

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

干杯,