如何使用在Google地图api v3中嵌入的Drive KML文件保存Viewport

时间:2013-06-21 01:39:42

标签: google-maps-api-3 kml viewport google-drive-api

编辑:解决:

var opt = { minZoom: 6, maxZoom: 9 };
  map.setOptions(opt);

我是一个剪切和粘贴的编码器,虽然我打算更好地学习语法,但我现在正处于截止日期,所以我正在寻求帮助。我已广泛搜索,虽然我的问题有解决方案,但我找不到适合我的方法。我的KML文件托管在Google云端硬盘上,因此不是文件网址,而是存在driveFileId。

如果要保留Viewport,通常只需将其添加到图层对象并将其设置为“true”即可。但是我的KML文件不会让我覆盖它的默认缩放级别,无论我怎么写它,边界都适合屏幕。有人可以帮忙吗?这是工作对象:

var layer = new google.maps.KmlLayer({
driveFileId: "0Bexampleg"});
layer.setMap(map);
编辑:这是整个事情。也许你可以看出是否存在导致这种情况的冗余或矛盾。

<!DOCTYPE html>
<html<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?key=Aexamplekey0&sensor=true"></script>
    <style>
        #map {
            width: 310px;
            height: 410px;
        }
    </style>

    <script>
        window.onload = function () {
var latlng = new google.maps.LatLng(53.385873, -1.471471);

var styles = [
  {
    //whatever
  }
]

var myOptions = {
zoom: 15,
            disableDefaultUI: false,
                styles: styles
            },

            map = new google.maps.Map(document.getElementById('map'), myOptions);

var layer = new google.maps.KmlLayer({
    driveFileId: "0Bexampleg"});
layer.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
    </script>

</head>

<body>
<div id="map"></div>
</body>
</html>

2 个答案:

答案 0 :(得分:4)

基于current release API documentation,您应该能够在实例化的对象中设置preserveViewport选项:

var layer = new google.maps.KmlLayer({
    driveFileId: "0Bexampleg",
    preserveViewport: true});
layer.setMap(map);

如果没有进一步的信息,例如您的KML数据的网址,有关地图中心和缩放的信息,就没有更多的信息可以说了。

答案 1 :(得分:1)

GOT IT!

这是:

var opt = { minZoom: 11, maxZoom: 15 };
map.setOptions(opt);

然后在myOptions对象中设置默认缩放。解决方案在此处找到:Google Maps v3 - limit viewable area and zoom level 感谢@ChrisV。我不知道为什么,但KML图层不允许原始的preserveViewport代码的任何排列。