对谷歌地图Api来说是相当新的。我有一个数组的数据,我想循环通过并绘制在地图上。看起来相当简单,但我发现的所有多标记教程都相当复杂
让我们以谷歌网站上的数据数组为例:
变量位置=[
[Bondi Beach',-33.890542151.274856,4],
[Coogee Beach',-33.923036151.259052,5],
[Cronulla Beach',-34.028249151.157507,3],
[‘曼利海滩’,-33.80010128657071151.28747820854187,2],
[‘马鲁布拉海滩’,-33.950198151.259302,1]
];
我只想绘制所有这些点,并在单击以显示名称时弹出一个信息窗口
这是我可以简化为的最简单的方法:
<;!DOCTYPE html>;
<;html>;
<;头>;
<;meta http equiv=“content type”content=“text/html;charset=UTF-8”/>;
<;标题>;谷歌地图多个标记</标题>;
<;脚本src=”http://maps.google.com/maps/api/js?sensor=false"
type=“text/javascript”></脚本>;
</头>;
<;车身>;
<;div id=“map”style=“宽度:500px;高度:400px;”</部门>;
<;script type=“text/javascript”>;
变量位置=[
[Bondi Beach',-33.890542151.274856,4],
[Coogee Beach',-33.923036151.259052,5],
[Cronulla Beach',-34.028249151.157507,3],
[‘曼利海滩’,-33.80010128657071151.28747820854187,2],
[‘马鲁布拉海滩’,-33.950198151.259302,1]
];
var map=new google.maps.map(document.getElementById('map'){
缩放:10,
中心:新谷歌地图LatLng(-33.92151.25),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i<;locations.length;i++){
marker=新的google.maps.marker({
位置:新的google.maps.LatLng(位置[i][1],位置[i][2]),
地图:地图
});
google.maps.event.addListener(标记,'click',(函数(标记,i){
返回函数(){
infowindow.setContent(位置[i][0]);
信息窗口。打开(地图、标记);
}
})(marker,i));
}
</脚本>;
</车身>;
</html>;
👨💻 在代码笔上编辑/分叉→
屏幕截图
将回调参数传递给addListener方法时,会出现一些闭包魔术。如果您不熟悉闭包的工作方式,那么这可能是一个相当棘手的话题。如果是这样的话,我建议查看以下Mozilla文章以获得简要介绍:
❯ Mozilla开发中心:使用闭包