Google Map API中地理区域的地理中心

时间:2014-12-16 09:23:54

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

我正试图以JSON格式http://maps.googleapis.com/maps/api/geocode/json?address=St%C5%99edo%C4%8Desk%C3%BD%20kraj&sensor=false获得名为“Středočeskýkraj”的地理区域中心,但它给我的结果不正确。它给了我“lat”:49.8782223,“lng”:14.9362955,但是正确的是https://www.google.cz/maps/place/St%C5%99edo%C4%8Desk%C3%BD+kraj/@50.060218,14.4659312,9z/data=!3m1!4b1!4m2!3m1!1s0x470b939c0e8ff2a3:0x100af0f6614a830(50.060218,14.4659312)这怎么可能,JSON返回不正确的数据?

感谢。

1 个答案:

答案 0 :(得分:2)

API返回的数据不正确,没有记录区域的返回位置将是该区域的中心。

看看http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html#q%3DSt%u0159edo%u010Desk%FD%20kraj。你会看到一个蓝色矩形,标志着这个区域的界限。

要获取边界的中心而不是标记位置,请根据边界计算它:

new google.maps.LatLngBounds(new google.maps.LatLng(49.501336,13.397336),
                             new google.maps.LatLng(50.619099,15.534525))
                              .getCenter();//returns 50.060217, 14.465930(Prague)

由于您似乎在服务器端请求地址,因此您可以在不使用Javascript-API的情况下计算中心:

lat:(bounds.southwest.lat+bounds.northeast.lat)/2 
lng:(bounds.southwest.lng+bounds.northeast.lng)/2

注意:结果将是数学中心,而不是地理中心(返回的纬度会有所不同),但对于您的用例,它应该足够了。要计算地理中心,请使用haversine-formula