[英]Problems calling fitbounds outside jquery.each()
我正在用 JavaScript(v3) 开发谷歌地图。 我需要从 XML 中显示一些标记,为此我使用了 jQuery。
这是对象和函数,可能会节省我解释的时间:
var VX = {
map:null,
bounds:null
}
VX.placeMarkers = function(filename) {
$.get(filename, function(xml) {
$(xml).find("marker").each(function() {
var lat = $(this).find('lat').text();
var lng = $(this).find('lng').text();
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
VX.bounds.extend(point);
VX.map.fitBounds(VX.bounds); //this works
var marker = new google.maps.Marker({
position: point,
map: VX.map,
zoom: 10,
center: point
});
});
});
//VX.map.fitBounds(VX.bounds); //this shows me the ocean east of Africa
}
所以基本上我的问题是我无法弄清楚如何从 .each 函数外部进行拟合,而在函数内部执行此操作会为每个看起来不好的标记调用它。
我在初始化地图时声明了边界......没有包含整个代码,因为它像 300 行。
我不应该能够使用我传递给全局对象的值吗?
编辑:啊,我是从 get 函数外部调用它的!
第二个调用不起作用,因为它在 ajax get()
返回之前触发。
将fitBounds
放在get()
处理程序中,但在each()
函数之外。 像这样:
var VX = {
map:null,
bounds:null
}
VX.placeMarkers = function(filename)
{
$.get
(
filename,
function(xml)
{
$(xml).find("marker").each
(
function()
{
var lat = $(this).find('lat').text();
var lng = $(this).find('lng').text();
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
VX.bounds.extend(point);
//VX.map.fitBounds(VX.bounds); //this works
var marker = new google.maps.Marker
({
position: point,
map: VX.map,
zoom: 10,
center: point
});
}
);
VX.map.fitBounds(VX.bounds); //-- This should work.
}
);
//VX.map.fitBounds(VX.bounds); //this shows me the ocean east of africa
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.