ala*_*ion 4 javascript google-maps
我无法使用Google Maps API v3显示地图标记.我试图将它们全部保存在一个阵列中,以显示相对简单的大量数据.目前,地图加载正常,但Uncaught TypeError: Object #<Object> has no method 'setValues'在尝试绘制标记时会抛出错误.每次迭代运行时都会重复该错误setTimeout().任何建议将不胜感激.
这是使用的JavaScript:
var map;
var markers = [
[
45.768366,
-108.5975760,
'Fitness 19'
],
[
45.785684,
-108.6144625,
'Granite Fitness'
],
... (more, syntactically correct)
[
45.7920092,
-108.4886232,
'Steepworld'
]
];
function mapinit() {
var conf = {
zoom: 11,
center: new google.maps.LatLng(45.7832856,-108.5006904),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('mapcont'),conf);
for(i in markers) {
window.setTimeout('mark('+i+')',i*200);
}
}
function mark(i){
google.maps.Marker({
position: google.maps.LatLng(markers[i][0],markers[i][1]),
animation: google.maps.Animation.DROP,
title: markers[i][2]
});
}
Run Code Online (Sandbox Code Playgroud)
好吧,在Chrome的JavaScript控制台(我喜欢那个东西)中乱七八糟之后,我能够让它完美运行.我重写了这个mapinit()和mark()函数:
function mapinit() {
var conf = {
zoom: 11,
center: new google.maps.LatLng(45.7832856,-108.5006904),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('mapcont'),conf);
for(i in markers) {
markers[i][3] = new google.maps.LatLng(markers[i][0],markers[i][1]);
window.setTimeout('mark('+i+')',i*200);
}
}
function mark(i){
new google.maps.Marker({
position: markers[i][3],
animation: google.maps.Animation.DROP,
map: map,
title: markers[i][2]
});
}
Run Code Online (Sandbox Code Playgroud)
这里的主要区别是position标记的变量似乎需要由于某种原因在外部变量中初始化,所以当我遍历markers数组时,我生成一个google.maps.LatLng作为每个标记的第四项.然后在mark()函数内引用它,标记显示成功.在setTimeout为错开标志的显示在脚本和地图快速加载奇妙的作品,尤其是在速度更快的连接.
在我的inClass网站上查看最终结果
这是new关键字,使所有的差异!
我有同样的问题.在构建Marker对象时使用new关键字使其至少在Chrome中再次运行.把它放在一个不同的超时事件中没有.在这里,我认为new只不过是语法糖......
| 归档时间: |
|
| 查看次数: |
7199 次 |
| 最近记录: |