我正试图以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返回不正确的数据?
感谢。
答案 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