Google地图返回错误的边界坐标

时间:2018-01-11 19:33:19

标签: web-services google-maps google-maps-api-3 google-places-api openstreetmap

如果你抬头看看" Mississauga"在Google地图上,它会返回如下所示的边界:

Google Maps Bounds

我需要的是边界的西南和东北坐标(上图中的红色方块)。

但是,当我使用Google Maps API时,它会返回以下边界:

    "bounds": {
      "northeast": {
        "lat": 43.737351,
        "lng": -79.17856599999999
      },
      "southwest": {
        "lat": 43.4173019,
        "lng": -79.8101295
      }
    },

但是当你将这些值插入地图绘图仪时,它会给出以下区域:

Google API bounds

这是多么荒谬的错误,因为它几乎包括了多伦多的全部,而不仅仅是密西沙加。

如何获取城市的正确的边界坐标?我做错了吗?

2 个答案:

答案 0 :(得分:1)

您可以使用包含Mississauga范围的KMZ或KML文件。搜索Mississauga KMZ,返回this link

我编辑了file to just contain Mississauga

Displayed on KmlLayer

Screenshot of map

代码段

function initialize() {
  var map = new google.maps.Map(document.getElementById("map_canvas"));
  var kmlLayer = new google.maps.KmlLayer({
    url: "http://www.geocodezip.com/geoxml3_test/kmz/Mississauga.kmz",
    map: map
  })

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

答案 1 :(得分:0)

地理编码器没有任何问题,也没有你正在做什么。

地理编码器的界限足以覆盖。

"bounds": {
  "northeast": {
    "lat": 43.737351,
    "lng": -79.17856599999999
  },
  "southwest": {
    "lat": 43.4173019,
    "lng": -79.8101295
  }
},

似乎Geocoder扩展了Mississauga对多伦多的界限,但事实并非如此。

边界延伸至安大略湖的一部分,属于密西沙加,位于属于多伦多的湖泊下方。

当湖区也突出显示时,密西沙加地区看起来像这样:http://jsbin.com/xoxevaw/edit?output(注意:用于突出湖泊的多边形线的坐标只是近似值)