在Javascript google maps API中从数组创建新标记

时间:2010-01-18 12:22:57

标签: javascript google-maps

我正在尝试将标记添加到Google地图上以使用以下方式识别状态:

function initialize() {
 var map = new GMap2(document.getElementById("map_canvas"));
 map.setCenter(new GLatLng(-25.641526,134.472656), 4);
 map.setMapType(G_NORMAL_MAP);
 map.setUIToDefault();

var states =["-35.083236,138.503909","-24.607069,144.667969","-18.229351,133.417969","-24.686952,123.574219","-32.398516,146.953125","-35.46067,149.150391","-37.020098,143.701172","-42.682435,146.733398"]; 
  for (i = 0; i == states.length; i++) {
  var point = new GLatLng(parseFloat(states[i]));
  map.addOverlay(new GMarker(point));
  }
}

但是当我加载地图(加载精细,正确居中和正确的地图类型)时,没有标记出现。我在这里做错了什么?

编辑:我把它改成了这个,现在它可以工作了:

var lats =[-35.083236,-24.607069,-18.229351,-24.686952,-32.398516,-35.46067,-37.020098,-42.682435];
var longs =[138.503909,144.667969,133.417969,123.574219,146.953125,149.150391,143.701172,146.733398];

for (i = 0; i <= lats.length; i++) {
var point = new GLatLng(lats[i],longs[i]);
map.addOverlay(new GMarker(point));

2 个答案:

答案 0 :(得分:5)

它看起来像是for循环中的拼写错误。尝试如下:

for (i = 0; i < states.length; i++) {

还要注意Tomas pointed out的浮动问题。

答案 1 :(得分:3)

您正在解析单个浮点值并尝试将其用作纬度和经度。

这......

var point = new GLatLng(parseFloat("-35.083236,138.503909"));

不会解析两个不同的浮点值并将它们传递给GLatLng。一种解决方案是拆分数组中的值:

function initialize() {
 var map = new GMap2(document.getElementById("map_canvas"));
 map.setCenter(new GLatLng(-25.641526,134.472656), 4);
 map.setMapType(G_NORMAL_MAP);
 map.setUIToDefault();

 var states =[-35.083236, 138.503909, -24.607069, 144.667969, ...
 for (i = 0; i < states.length; i+=2) {
   var point = new GLatLng(states[i], states[i+1]);
   map.addOverlay(new GMarker(point));
}

}

还要注意你的for循环不正确,正如Daniel指出的那样。