我正在使用Google Maps API并且目前已根据确切位置成功添加标记,但我还希望能够在国家/地区添加标记,而无需拥有该国家/地区的坐标。
这可能吗?
答案 0 :(得分:12)
确实很有可能。使用GeoCoder:https://developers.google.com/maps/documentation/javascript/geocoding
GeoCoder可以通过知道其名称来返回国家/地区的纬度/经度。
假设您已经有map
:
geocoder = new google.maps.Geocoder();
function getCountry(country) {
geocoder.geocode( { 'address': country }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
getCountry('USA');
getCountry('Brazil');
getCountry('Denmark');
将在您的地图上放置标记,位于美国,巴西和丹麦的直接中心。
答案 1 :(得分:0)
根据Maps API,marker.position
是必需属性,且必须为LatLng
类型。所以至少你需要知道国家中心的坐标,或者国家的有界坐标数组,你可以从中推断出中心的坐标。
我相信,如果您只使用国家/地区名称Geocoder,该服务将为您提供该国家/地区的确切中心坐标。我没有对此进行测试,我不知道如果你可以使用它有多少限制,但是值得你把它作为你问题的解决方案来检查。
例如:
var geo = new google.maps.Geocoder();
geo.geocoder.geocode('Spain', function (data) {
// the coordinates are held in data[0].geometry.location.lat() and data[0].geometry.location.lng().
});