【问题标题】:How to get center point of KML with Google Maps API如何使用 Google Maps API 获取 KML 的中心点
【发布时间】:2020-09-02 01:23:15
【问题描述】:

我正在尝试获取 KML 文件的中心 latLng 点并将其存储在地图设置的变量中,但我不断收到错误消息“未捕获的类型错误:无法读取未定义的属性 '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();

    } 

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    如果您希望地图以 KML 为中心,设置preserveViewport: false,则无需设置中心。

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

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

    等待KmlLayer的defaultviewport可用,然后设置地图中心:

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

    proof of concept fiddle

    代码 sn-p:

    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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 2016-01-25
      • 2012-05-17
      • 2014-01-10
      • 2016-04-09
      • 1970-01-01
      相关资源
      最近更新 更多