【问题标题】:Google Map javascript MarkerManager markers not showingGoogle Map javascript MarkerManager 标记未显示
【发布时间】:2012-04-10 01:38:55
【问题描述】:

我有一个读取 XML 文件的地图;这一切都非常简单,从这里复制: http://geochalkboard.wordpress.com/2009/03/30/reading-xml-files-with-the-google-maps-api/

我的版本在这里: http://www.cloudfund.me/maps/mashup.html 和它正在读取的数据文件在这里: convert.xml 在同一目录中。

当我运行它时,我根本没有得到任何积分。我登录了一些控制台以查看是否可以看到任何内容,但就这一点而言,它只是顺利通过。文件加载正常,我可以毫无问题地观察所有行(本例中为 208 行)的代码循环。

我得到的唯一警告是“资源解释为其他传递为未定义”的警告;看过其他一些线程后,我看不到任何有帮助的东西 - 没有空的 src 链接等。据我所知,这也不应该阻止它标记点。

这才是真正的关键——在试图追踪这个错误时,我在我自己的服务器上设置了一个原始代码的精确副本,并得到一个关于空字段的错误,我添加了一些条件代码进行排序;这个版本适用于我的服务器。这是同一目录中的 austin.html(抱歉,我的第一篇文章中的链接不能超过两个!)

所以 - 我的代码是这样的:

<title>Test </title>


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=AIzaSyDgybFoyn3i5j_6d7ul7p2dPNQ5b1xOWnk"
        type="text/javascript">console.log("Loaded Maps API");</script>

            <script src="http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js">console.log("MarkerManager");</script>


<script type="text/javascript">
console.log("Into Main Script");
function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(51.39906378, -2.449545605), 13);
    map.setUIToDefault();
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addMapType(G_PHYSICAL_MAP);
    map.setMapType(G_PHYSICAL_MAP);
    console.log("Reached end of map initialising");
    addMarkersFromXML();
    console.log("MarkersfromXML")
  }
}

function addMarkersFromXML(){
   var batch = [];
   mgr = new MarkerManager(map); 

   var request = GXmlHttp.create();
   console.log("About to open converted.xml")
   request.open('GET', 'converted.xml', true);
   console.log("Opened Converted.xml")
   request.onreadystatechange = function() {
  if (request.readyState == 4 && request.status == 200) 
{
    var xmlDoc = request.responseXML;
    var xmlrows = xmlDoc.documentElement.getElementsByTagName("row");

    for (var i = 0; i < xmlrows.length; i++) {
        var xmlrow = xmlrows[i];
        console.log("Running through row number",i)
        var xmlcellLongitude = xmlrow.getElementsByTagName("longitude")[0];
        console.log(xmlcellLongitude);
        var xmlcellLatitude = xmlrow.getElementsByTagName("latitude")[0];
        var point = new GLatLng(parseFloat(xmlcellLatitude.firstChild.data),parseFloat(xmlcellLongitude.firstChild.data));

        //get the PAO
        var xmlcellAssetName = xmlrow.getElementsByTagName("pao")[0];
        console.log(xmlcellAssetName);
        var celltextAssetName = xmlcellAssetName.firstChild.data;

        //get the area
        var xmlcellArea = xmlrow.getElementsByTagName("area")[0];
        console.log(xmlcellArea);
        var celltextArea = xmlcellArea.firstChild.data;

        //get the land type
        var xmlcellLandType = xmlrow.getElementsByTagName("landtype")[0];
        console.log(xmlcellLandType);
        var celltextLandType = xmlcellLandType.firstChild.data;

        //get the Planning Permissions
        var xmlcellPlanning = xmlrow.getElementsByTagName("planning")[0];
        console.log(xmlcellPlanning);
        var celltextPlanning = xmlcellPlanning.firstChild.data;

        var htmlString = "Asset Name: " + celltextAssetName + "<br>" + "Size: " + celltextArea + "<br>" + "Land Type: " + celltextLandType + "<br>" + "Planning Permissions: " + celltextPlanning;
        //var htmlString = 'yes'
        var marker = createMarker(point,htmlString);
        batch.push(marker);

    }

    mgr.addMarkers(batch,50);
    mgr.refresh();

  }
    }
request.send(null);

  }

 function createMarker(point,html) {
       var marker = new GMarker(point);
       GEvent.addListener(marker, "click", function() {
         marker.openInfoWindowHtml(html);
       });
       return marker;
 }
  </script>
 </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map_canvas" style="width: 1100px; height: 700px"></div>
  </body>
</html>

【问题讨论】:

    标签: javascript xml google-maps google-maps-markers


    【解决方案1】:

    认为你有一个错字。在您的代码中,您为 API 提取了一个不完整的 URL:

    &lt;script src="//maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;sensor=false&amp;amp;key=AIzaSyDgybFoyn3i5j_6d7ul7p2dPNQ5b1xOWnk"

    那个错误的 // 似乎把代码扔掉了。

    不过,老实说,原始示例(和 austin.html)并没有像人们想象的那样工作。这些点确实会被渲染,但是当您缩小时不会发生有效的聚类。怀疑 API 的 2.0 分支被移到了较新的版本并造成了一些不兼容。

    建议您在 API 版本 3 中重写它。有一个集群管理器可以很好地工作。

    http://tools.voanews2.com/nuclear_reactors/

    【讨论】:

    • 谢谢!我先看看那个 URL……嗯,第二个。我是一个完全的新手(因此从别人的代码开始)。所以这可能需要一段时间。
    • 我已经清除了那个错字,但仍然什么也没做。呸。 v3 代码锣有很大不同吗?
    • 以'//'开头的url不是拼写错误,而是协议相对URLpaulirish.com/2010/the-protocol-relative-url)。这将导致使用与包含页面相同的协议(http 或 https)加载地图脚本。
    • 不同,是的,但在某些方面也更干净。最好的部分 - 它就在这里。核反应堆示例不使用外部文件,但是那部分是微不足道的。在通过任何方法加载点后,您只需启动“markerCluster = new MarkerClusterer(map, markers, clusterOptions);”
    • 嗯;收到 paulirish 网站的警告:“paulirish.com 上的此网页已被报告为攻击页面,并已根据您的安全偏好被阻止。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2014-02-23
    • 2014-10-20
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多