我试图从空间坐标数据中在Google地图上呈现邮政编码。由于有很多坐标,我想动态加载适用于可观察地图的坐标。
我尝试这样的事情:
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var ctaLayer = new google.maps.KmlLayer({
url: 'http://example.com/my.kml'
});
ctaLayer.setMap(map);
google.maps.event.addListener(map, 'bounds_changed', function() {
var ne_lat = map.getBounds().getNorthEast().lat();
var ne_lng = map.getBounds().getNorthEast().lng();
if(typeof ctaLayer !== 'undefined') {
ctaLayer.setMap(null);
}
var ctaLayer = new google.maps.KmlLayer({
url: 'http://example.com/my.kml?ne_lat=' + ne_lat + '&ne_lng=' + ne_lng;
});
ctaLayer.setMap(map);
});
问题是,当我尝试移动或缩放地图时,它只会让我回到原来的位置(缩小或重新定位地图)。
答案 0 :(得分:2)
KmlLayer auto默认以数据为中心。如果您不希望它更改缩放/中心,请将preserveViewport选项设置为true。
(加上你的代码中有语法错误)
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var ctaLayer = new google.maps.KmlLayer({
url: 'http://example.com/my.kml',
preserveViewport: true
});
ctaLayer.setMap(map);
google.maps.event.addListener(map, 'bounds_changed', function() {
var ne_lat = map.getBounds().getNorthEast().lat();
var ne_lng = map.getBounds().getNorthEast().lng();
if(typeof ctaLayer !== 'undefined') {
ctaLayer.setMap(null);
}
var ctaLayer = new google.maps.KmlLayer({
url: 'http://example.com/my.kml?ne_lat=' + ne_lat + '&ne_lng=' + ne_lng,,
preserveViewport: true
});
ctaLayer.setMap(map);
});