谷歌地图api javascript加载kml,设置缩放和中心
我正在根据用户交互加载4个不同的kml文件。使用以下代码加载KML时的默认操作:谷歌地图api javascript加载kml,设置缩放和中心,javascript,google-maps-api-3,kml,Javascript,Google Maps Api 3,Kml,我正在根据用户交互加载4个不同的kml文件。使用以下代码加载KML时的默认操作: SW4KML = "http://kml.url" var sw4KmlLayer = new google.maps.KmlLayer({url: SW4KML}); sw4KmlLayer.setMap(map); 它将缩放到KML层的边界。我想要的是能够改变缩放为一个或两个更少,也移动地图的中心稍微向右 我已经使用了“preserveViewport:true” SW4KML = "http://kml.u
SW4KML = "http://kml.url"
var sw4KmlLayer = new google.maps.KmlLayer({url: SW4KML});
sw4KmlLayer.setMap(map);
它将缩放到KML层的边界。我想要的是能够改变缩放为一个或两个更少,也移动地图的中心稍微向右
我已经使用了“preserveViewport:true”
SW4KML = "http://kml.url"
var sw4KmlLayer = new google.maps.KmlLayer({url: SW4KML, preserveViewport: true});
sw4KmlLayer.setMap(map);
但我还没有完全弄清楚如何从那里开始,我尝试将贴图选项更改为我想要的lat long和zoom,然后重新加载,但由于某种原因,我的kml层没有加载
如果过去有人不得不这样做,请告诉我你是如何做到的:)
谢谢一种方法是使用Kmlayers的默认视口的并集
var G = google.maps;
var layers = [];
function computeBounds() {
var bounds = new G.LatLngBounds();
for (var i=0; i<layers.length;i++) {
if (layers[i].getMap() != null) {
if ((typeof bounds == "undefined") || bounds.isEmpty()) bounds = layers[i].getDefaultViewport();
else bounds.union(layers[i].getDefaultViewport());
}
}
if (!bounds.isEmpty()) map.fitBounds(bounds);
}
function toggle() {
if (!this.kmlLayer ) {
this.kmlLayer = new G.KmlLayer(
'http://www.geocodezip.com/geoxml3_test/kmz/' + this.id + '.kmz',
{ preserveViewport:true } );
this.kmlLayer.myId = layers.length;
layers.push(this.kmlLayer);
G.event.addListener(this.kmlLayer, "status_changed", function() {
document.getElementById('status').innerHTML += this.url+':'+this.getStatus()+"<br>";
});
G.event.addListener(this.kmlLayer,"defaultviewport_changed", function() {
this.bounds = this.getDefaultViewport();
computeBounds();
});
}
if ( this.kmlLayer.getMap() != null ) {
this.kmlLayer.setMap( null );
} else {
this.kmlLayer.setMap( map );
};
computeBounds();
};
function initialize() {
var layers = document.getElementsByTagName('input');
var options = {
center: new G.LatLng(34.9, 137.3),
zoom: 10,
mapTypeId: G.MapTypeId.TERRAIN,
scaleControl: true,
overviewMapControl: true,
mapTypeControlOptions: {
style:G.MapTypeControlStyle.DROPDOWN_MENU }
};
map = new G.Map(document.getElementById('map'), options);
for (var i=0; i<layers.length; i++) {
layers[i].type = 'checkbox';
G.event.addDomListener(layers[i], 'click', toggle)
};
};
G.event.addDomListener(window, 'load', initialize);
var G=google.maps;
var层=[];
函数computeBounds(){
var bounds=新的G.LatLngBounds();
对于(var i=0;iYou不应该重新加载地图,只需更改中心并缩放到您想要的位置。您的意思是这样吗?谢谢geocodezip,这看起来不错,但对我来说有点复杂,所以我会花一些时间来查看它。