创建Javascript/JQuery后检索Google地图对象
我想知道是否有办法在创建后检索google.maps.Map对象?我需要在我的页面中创建几个映射,并且我正在使用一个函数通过JSON循环来创建映射。因此,我没有留下一个全局“映射”对象,我需要能够不时地重新居中映射。问题是,我不知道如何让“地图”对象重置地图的中心。我可以通过JQuery选择器获取div,在这里我使用Gmaps.js创建了映射,甚至可以触发“resize”事件来修复隐藏的div。然而,我没有任何运气检索地图对象本身 ------------------地图创建功能--------------------------------------创建Javascript/JQuery后检索Google地图对象,javascript,jquery,html,google-maps,Javascript,Jquery,Html,Google Maps,我想知道是否有办法在创建后检索google.maps.Map对象?我需要在我的页面中创建几个映射,并且我正在使用一个函数通过JSON循环来创建映射。因此,我没有留下一个全局“映射”对象,我需要能够不时地重新居中映射。问题是,我不知道如何让“地图”对象重置地图的中心。我可以通过JQuery选择器获取div,在这里我使用Gmaps.js创建了映射,甚至可以触发“resize”事件来修复隐藏的div。然而,我没有任何运气检索地图对象本身 ------------------地图创建功能--------
function doMaps(){$.getJSON("map-locations.json", function(results) {
//var JSONdata = JSON.parse(results);
//alert(results);
$.each(results, function(index, val) {
var mapdiv = results[index].mapdiv;
var destlat = results[index].destination.lat;
var destlon = results[index].destination.lon;
var desttitle = results[index].destination.title;
var orglat = results[index].origin.lat;
var orglon = results[index].origin.lon;
var map;
map = new GMaps({
el: '#'+mapdiv,
lat: destlat,
lng: destlon,
width: '750px',
height: '580px'
});
map.travelRoute({
origin: [orglat, orglon],
destination: [destlat, destlon],
travelMode: 'driving',
step: function(e){
$('#instructions').append('<li>'+e.instructions+'</li>');
$('#instructions li:eq('+e.step_number+')').delay(450*e.step_number).fadeIn(200, function(){
map.drawPolyline({
path: e.path,
strokeColor: '#131540',
strokeOpacity: 0.6,
strokeWeight: 6
});
});
}
});
map.addMarker({
lat: destlat,
lng: destlon,
title: desttitle,
infoWindow: {
content: '<p>'+desttitle+'</p>'
}
});
});
});
};
function resizeMaps(){
$('.map').each(function() {
var map = $(this).get(0);
google.maps.event.trigger(map, 'resize');
// WHERE I WOULD LIKE TO RECENTER AFTER RESIZE
//$(this).get(0).setCenter(currCenter);
})
}
任何帮助都将不胜感激。创建对象数组是最好的选择。实际上,我最终得到了一个多维数组
var maps = new Array();
function doMaps(){$.getJSON("map-locations.json", function(results) {
//var JSONdata = JSON.parse(results);
//alert(results);
$.each(results, function(index, val) {
var mapdiv = results[index].mapdiv;
var destlat = results[index].destination.lat;
var destlon = results[index].destination.lon;
var desttitle = results[index].destination.title;
var orglat = results[index].origin.lat;
var orglon = results[index].origin.lon;
var cntlat = results[index].center.lat;
var cntlon = results[index].center.lon;
var zoom = results[index].zoom;
var route;
var map;
map = new GMaps({
el: '#'+mapdiv,
lat: cntlat,
lng: cntlon,
width: '750px',
height: '580px',
zoom: zoom
});
map.addMarker({
lat: destlat,
lng: destlon,
title: desttitle,
infoWindow: {
content: '<p>'+desttitle+'</p>'
}
});
map.addMarker({
lat: orglat,
lng: orglon,
title: 'You Are Here',
infoWindow: {
content: '<p>You Are Here</p>'
}
});
setTimeout(function() {
map.getRoutes({
origin: [orglat, orglon],
destination: [destlat, destlon],
travelMode: 'driving'
});
}, 1000);
var mapData = new Array();
mapData[0] = mapdiv;
mapData[1] = map;
maps.push(mapData);
});
});
};
//retrieve mapData
var mapData = $.grep(maps, function(mapData) {
return mapData[0] === mapdiv;
});
map = mapData[0][1];
var-maps=new-Array();
函数doMaps(){$.getJSON(“map locations.json”),函数(结果){
//var JSONdata=JSON.parse(结果);
//警报(结果);
$.each(结果、函数(索引、val){
var mapdiv=结果[索引].mapdiv;
var destlat=results[index].destination.lat;
var destlon=results[index].destination.lon;
var desttitle=结果[索引].destination.title;
var orglat=结果[索引].origin.lat;
var orglon=结果[索引].origin.lon;
var cntlat=结果[索引].center.lat;
var cntlon=结果[index].center.lon;
var zoom=结果[索引]。缩放;
var路径;
var映射;
map=新的gmap({
el:“#”+mapdiv,
lat:cntlat,
液化天然气:cntlon,
宽度:“750px”,
高度:'580px',
缩放:缩放
});
map.addMarker({
lat:destlat,
液化天然气:德斯隆,
标题:标题,,
信息窗口:{
内容:“”+desttitle+“”
}
});
map.addMarker({
拉特:奥拉特,
lng:orglon,
标题:“你在这里”,
信息窗口:{
内容:“你在这里”
}
});
setTimeout(函数(){
map.getRoutes({
来源:[orglat,orglon],
目的地:[目的地,目的地],
travelMode:“驾驶”
});
}, 1000);
var mapData=新数组();
mapData[0]=mapdiv;
mapData[1]=地图;
maps.push(mapData);
});
});
};
//检索地图数据
var mapData=$.grep(映射,函数(mapData){
返回mapData[0]==mapdiv;
});
map=mapData[0][1];
您的JSON看起来像什么?为什么你不能创建一个全局的maps对象数组呢?这就是我开始尝试的,我现在正在尝试解决这个问题。