【问题标题】:Programmatically generate Google Maps markers (API v3)以编程方式生成 Google 地图标记 (API v3)
【发布时间】:2011-03-06 12:25:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: google-maps google-maps-api-3 google-maps-markers


    【解决方案1】:

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

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

    干杯,

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

      • +1 因为 Google 的图表 API 允许浏览器缓存生成的图像。
      • 遗憾的是,现在已被 Google 弃用。
      【解决方案3】:

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

      【讨论】:

      • 我的问题更多是关于获取谷歌地图标记图标图形并能够使用它并在其上粘贴一个数字,从 PHP 发送。所以更多的是关于图像处理,或者 API 是否提供了一种即时执行此操作的方法?干杯。
      • 我一直收到此代码错误:未捕获的类型错误:无法读取未定义的属性'get'...单击地图图标时会发生这种情况
      • 修正:我已经编辑了代码,问题是地图为空,但错误很难理解,而且我认为chrome实际上告诉我地图确实设置了;但是,将变量设为全局变量解决了这个问题。
      猜你喜欢
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多