1

我想在 Wordpress 的 GoogleMap 上动态创建标记。标记是根据帖子标签(都是位置)计算得出的。我在计算坐标和创建 php 数组方面没有问题。当我必须在地图上绘制存储在数组中的动态生成的数据时,问题就来了,因为没有显示指针

我在 WP header.php 中指定了以下说明:

  <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=mykey" type="text/javascript"></script>

  <script src="<?php bloginfo('template_directory'); ?>/mapLocations_cache.php" type="text/javascript"></script> 
  <script src="<?php bloginfo('template_directory'); ?>/map_functions.js" type="text/javascript"></script>

动态创建的数组(我保存在 mapLocations_cache.php 中)具有以下格式:

   var markers = [
   {
  'latitude': 62.3908358,
  'longitude': 17.3069157,
  'title': 'it happens in Sundsvall',
  'news': 'che noia5'
   },
   ];

map_functions.js 包含以下代码:

   var centerLatitude = 62.3908358;
   var centerLongitude = 17.3069157;
   var startZoom = 4;

   var map;

   function addMarker(latitude, longitude, description) {
   var marker = new GMarker(new GLatLng(latitude, longitude));

    GEvent.addListener(marker, 'click',
     function() {
        marker.openInfoWindowHtml(description);
     }
   );

   map.addOverlay(marker);
   }

   function init() {
   if (GBrowserIsCompatible()) {    
    map = new GMap2(document.getElementById("map")); 
    map.addControl(new GSmallMapControl());
    map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);

    for(id in markers) {
        addMarker(markers[id].latitude, markers[id].longitude, markers[id].title);


    }
    }
    }

    window.onload = init;
    window.onunload = GUnload;

由于当我使用非动态生成的文件/数组时,此代码运行良好,我怀疑当我尝试从 WordPress 帖子和标签动态收集数据时,标头中包含的 JavaScript 未正确完成。

任何建议都会有所帮助:-(

干杯

码头

4

4 回答 4

0
 var markers = [
      {
          'latitude': 62.3908358,
          'longitude': 17.3069157,
          'title': 'it happens in Sundsvall',
          'news': 'che noia5'
      },
   ];

你错过了一个结束撇号。我不确定这是否是问题,但您可以确定检查并确保不是。

除此之外,我不太确定,您也可以查看此链接:http ://code.google.com/apis/maps/documentation/javascript/

于 2011-09-15T12:35:56.097 回答
0

以下是一些建议:

  1. 确保在markers数组中的最后一个元素之后没有“,”(就像现在在您的代码中一样)。
  2. 更喜欢for (id = 0; id < markers.length; ++id) {...}遍历数组。
  3. 确保您在function addMarker(lat, lng, ..). 您还可以通过以下方式强制转换为数字:var marker = new GMarker(new GLatLng(lat-0, lng-0));.
  4. 使用“显示源”或类似功能在浏览器中显示和检查页面的源。
  5. 将完整的页面源下载到您的本地计算机并检查它。
  6. 使用 Javascript 调试器(例如 Firebug)来调试您的代码。
于 2011-09-15T15:03:31.270 回答
0

尤里卡!我确实找到了解决我的错误的方法。我没有在标头中指定处理指针和 GoogleMaps 的 Javacript 代码,而是将其移至 index.php 的底部。这意味着只有当我的地理编码器完成其工作并且指针列表/数组完成时才会处理地图数据!

PhP 和 Javascript 之间的交互对我来说并不完全清楚 :-)

码头

于 2011-09-26T12:33:44.653 回答
0

使用 Google Geocoding API 来传递位置本身,而不是使用另一个脚本来编码 long 和 lat。Google API 可以很好地处理城市名称、国家名称和邮政编码,即使格式不完美,也相当防弹。

于 2011-09-15T22:21:21.330 回答