【问题标题】:Location names in google maps using loops使用循环的谷歌地图中的位置名称
【发布时间】:2014-07-17 11:55:52
【问题描述】:

我正在编写一个代码,它将使用谷歌的 api 在地图上绘制多个位置。坐标、名称和 MMSI 编号存储在 XML 文件中,并以 javascript 的形式导入。

这是我正在谈论的代码部分:

    for(i=0; i<x; i++)
      {
      var locations = [
        ['MMSI', 50.26835, 50.45563, 1],
        ['MMSI', 50.29435, 50.44523, 2],
        ['MMSI', 50.09399, 50.40548, 3]
       }

我想做的是将i 添加到'MMSI' 的末尾并将其转换为上面预定义的变量。

那么上面第一段代码写的是:

    var MMSI1 = 163474;
    var MMSI2 = 209483;
    var MMSI3 = 705245;

    etc, etc...

并且需要地图标记来显示这些数字,而不是简单的 MMSI。

但我不知道如何实现这一点,因为每次尝试时程序都不会运行,而且谷歌的 api 只能使用引号,而不是变量。

我很确定这个问题有一个简单的答案,我很抱歉不得不问这样一个愚蠢的问题,但我似乎无法在任何地方找到答案或自己想办法。

提前感谢您的帮助。

另外,如果我用错了任何术语,我很抱歉我还在学习这门语言,我并不总是知道我说的是否正确。

【问题讨论】:

  • 您介意用您目前的工作状态设置jsfiddle.net,以便我们更好地帮助您吗?
  • 另外,这些数字是从哪里来的(163474、209483、705245)?
  • 现在这些只是随机数,但一旦完成,它们将是来自aishub.net的 MMSI 号码
  • 无论如何这里是 jsfiddle 链接:jsfiddle.net/gt8vK 不确定我是否正确,但我希望这会有所帮助。
  • 我可以看看 xmlhttp.responseXML 吗?我的意思是 XML

标签: javascript html google-maps loops quotes


【解决方案1】:

好吧,这似乎可行,我删除了您的 ajax 调用以加载 XML,并将 XML 粘贴到小提琴本身中。另外,我不是 XML 专家,所以第一部分可能有更简单的方法。

http://jsfiddle.net/gt8vK/4/

var x= "<Vessels><Ship><MMSI>431000527</MMSI><CALLSIGN>SLBM</CALLSIGN><LATITUDE>35.4150</LATITUDE><LONGITUDE>139.725</LONGITUDE><DESTINATION>JP SGM</DESTINATION></Ship><Ship><MMSI>244660180</MMSI><CALLSIGN>PD8027</CALLSIGN><LATITUDE>52.4066</LATITUDE><LONGITUDE>4.82345</LONGITUDE><DESTINATION>lalallal</DESTINATION></Ship></Vessels>";

var xmlDoc = new DOMParser().parseFromString(x,'text/xml');
var allShips = xmlDoc.getElementsByTagName("Ship");
console.log(xmlDoc.getElementsByTagName("Ship")[0].getElementsByTagName("MMSI")[0].childNodes[0].text)
var ships = [];

for (var i = 0, l = allShips.length; i < l; i++) {
    ships.push({
    name: 'MMSI' + (i + 1).toString(),
    originalName: allShips[i].getElementsByTagName("MMSI")[0].childNodes[0].nodeValue,
    latitude: allShips[i].getElementsByTagName("LATITUDE")[0].childNodes[0].nodeValue,
    longitude: allShips[i].getElementsByTagName("LONGITUDE")[0].childNodes[0].nodeValue
    })   
}



        var map = new google.maps.Map(document.getElementById('map-canvas'), {
          zoom: 2 ,
          center: new google.maps.LatLng(0, 0),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        var infowindow = new google.maps.InfoWindow();

      var marker, i;

        for (i = 0; i < ships.length; i++) {
          marker = new google.maps.Marker({
            position: new google.maps.LatLng(ships[i].latitude, ships[i].longitude),
            map: map
          });

          google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
              infowindow.setContent(ships[i].name);
              infowindow.open(map, marker);
            }
          })(marker, i));
        }

基本上,我将所有船只放在一个对象中,而不是为每个船只创建一个新变量,这将使所有内容保持清洁,并且您仍然可以访问它们中的每一个,只需使用 ship['number'] 而不是 shipNumber。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2011-04-27
    • 2012-09-18
    • 2013-12-08
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多