Javascript 谷歌地图信息窗口出现在一个角落
这是我的html代码,用于生成marker和infowindow(使用RubyonRails)Javascript 谷歌地图信息窗口出现在一个角落,javascript,ruby-on-rails,ruby,google-maps,Javascript,Ruby On Rails,Ruby,Google Maps,这是我的html代码,用于生成marker和infowindow(使用RubyonRails) var标记=[] 函数initMap(){ var latLng1=新的google.maps.LatLng(1.352083103.819836); 变量myOptions={ 缩放:12, 中心:latLng1, mapTypeId:google.maps.mapTypeId.ROADMAP } map=new google.maps.map(document.getElementById('ma
var标记=[]
函数initMap(){
var latLng1=新的google.maps.LatLng(1.352083103.819836);
变量myOptions={
缩放:12,
中心:latLng1,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById('map\u canvas'),myOptions);
对于(i=0;i问题在于您的MarkerWithLabel
库。Infowindow从marker获取位置。尝试使用此链接。它包含您想要实现的所有内容。它不起作用,然后您还可以使用setPosition()为Infowindow设置位置
函数只需传递用于创建标记的latlng,即可完成。for循环中声明的函数的每个实例共享包含值i
的相同闭包,因此所有addListener调用基本上都在调用iw.open(映射,未定义)
因为i
将在迭代结束时离开数组的末尾
有关此问题的示例解决方案,以及JavaScript中闭包的更多信息,请参阅。我不建议使用new gem将数据从ruby传递到js…您可以通过多种方式简单地完成此操作…您的代码看起来不错,但我无法说明gon
如何处理您的js脚本。请查看类似的问题我用动态标记和信息窗口实现了相同的动态映射
。这段代码非常有效
谢谢~您的链接已满帮助,但我的信息窗口语法与此链接相同,并且infowinds对于单个标记器工作正常。所以我认为是内部问题吗?
var marker=[]
function initMap() {
var latLng1 = new google.maps.LatLng(1.352083, 103.819836);
var myOptions = {
zoom: 12,
center: latLng1,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
for(i=0;i<gon.astatic.length;i++){
var latLng = new google.maps.LatLng(gon.astatic[i][1], gon.astatic[i][2]);
if(i<2){
marker[i] = new MarkerWithLabel({position: latLng, map: map,icon:"/assets/green_MarkerV.png" ,labelClass: "labels",labelContent: gon.astatic[i][3]});}
else
{
marker[i] = new MarkerWithLabel({position: latLng, map: map,icon:"/assets/green_MarkerN.png" ,labelClass: "labels",labelContent: gon.astatic[i][3]});
}
var iw =new google.maps.InfoWindow({content: 'HI' });
google.maps.event.addListener(marker[i],"mouseover",function(e){iw.open(map,marker[i]);})
}