Php GoogleMap和Wordpress:动态创建标记的问题

Php GoogleMap和Wordpress:动态创建标记的问题,php,javascript,wordpress,dynamically-generated,Php,Javascript,Wordpress,Dynamically Generated,我想在Wordpress的谷歌地图上创建日常标记。标记是根据post标记(所有位置)计算的。我在计算坐标和创建php数组方面没有问题。当我必须在地图上绘制存储在数组中的动态生成的数据时,问题就出现了,因为没有显示指针 我在WP header.php中指定了以下说明: <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=mykey" type="text/javascript"><

我想在Wordpress的谷歌地图上创建日常标记。标记是根据post标记(所有位置)计算的。我在计算坐标和创建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>
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没有完成

任何建议都有助于:-(

干杯

码头

您丢失了一个结束撇号。我不确定这是否是问题所在,但您可以检查它并确保它不是问题所在


除此之外,我不太确定,您也可以查看此链接:

以下是一些建议:

  • 确保
    markers
    数组中的最后一个元素后面没有“,”(就像现在代码中一样)
  • 首选(id=0;id对数组进行迭代
  • 确保在
    函数addMarker(lat,lng,…)
    中获得正确的数字。您还可以通过以下方式强制转换数字:
    var marker=new GMarker(new GLatLng(lat-0,lng-0));
  • 使用“显示源”或类似工具在浏览器中显示并检查页面的源
  • 将完整的页面源代码下载到本地计算机并进行检查
  • 使用Javascript调试器(例如Firebug)调试代码

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

    Eureka!我找到了解决错误的方法。没有指定负责标题中的指针和谷歌地图,我将其移动到index.php的底部。这意味着只有当我的地理编码器完成其工作并且指针列表/数组完成时,地图数据才会被处理

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


    玛丽娜

    嗨,谢谢你的指点。撇号在那里(我的意思是在实际代码中)。我将试着看一看您向我建议的文档。干杯,谢谢。我会试试你的建议!西蒙,我试试看。方法
       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;
    
     var markers = [
          {
              'latitude': 62.3908358,
              'longitude': 17.3069157,
              'title': 'it happens in Sundsvall',
              'news': 'che noia5'
          },
       ];