我在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函数外部进行fitbounds,并且在函数内部执行它会为每个看起来很糟糕的标记调用它。
我在初始化地图时声明边界...还没有包含整个代码,因为它像300行。
我能够使用传递给全局对象的值吗?
编辑:啊,我是从get函数外面调用它的!
答案 0 :(得分:0)
第二个调用不起作用,因为它在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
}