gpt4 book ai didi

javascript - 如何使用 Google Maps API 获取 KML 的中心点

转载 作者:行者123 更新时间:2023-11-30 11:45:32 25 4
gpt4 key购买 nike

我试图获取 KML 文件的中心 latLng 点并将其存储在 map 设置的变量中,但我不断收到错误消息“未捕获的类型错误:无法读取未定义的属性‘getCenter’(…)”。 getDefautViewport 返回未定义,我不确定为什么。到目前为止我的代码:

    var map;
function initMap() {

map = new google.maps.Map(document.getElementById('map'), {
center: getCenter,
zoom: 10
}
});

var layer1 = new google.maps.KmlLayer({
url: 'http://googlemaps.github.io/js-v2-samples/ggeoxml/cta.kml',
preserveViewport: true,
map: map
});

var getCenter = layer1.getDefaultViewport().getCenter();

}

最佳答案

如果希望 map 以KML为中心,设置preserveViewport: false,则不需要设置中心。

在将 KmlLayer 添加到 map 之前,您无法检索它的默认视口(viewport),并且在创建 map 之前,您无法将其添加到 map 。创建 map 时不要设置 map 的中心属性:

map = new google.maps.Map(document.getElementById('map'), {
zoom: 10
});

等待 KmlLayer 的默认视口(viewport)可用,然后设置 map 中心:

google.maps.event.addListener(layer1, 'defaultviewport_changed', function() {
var getCenter = layer1.getDefaultViewport().getCenter();
map.setCenter(getCenter);
});

proof of concept fiddle

代码片段:

var map;

function initMap() {

map = new google.maps.Map(document.getElementById('map'), {
zoom: 10
});

var layer1 = new google.maps.KmlLayer({
url: 'https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml',
preserveViewport: true,
map: map
});
google.maps.event.addListener(layer1, 'defaultviewport_changed', function() {
var getCenter = layer1.getDefaultViewport().getCenter();
map.setCenter(getCenter);
console.log(getCenter.toUrlValue(6));
});

}
google.maps.event.addDomListener(window, "load", initMap);
html,
body,
#map {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map"></div>

关于javascript - 如何使用 Google Maps API 获取 KML 的中心点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41110951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com