Google Maps API,在不使用坐标的国家/地区放置标记

时间:2013-09-11 14:50:38

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

我正在使用Google Maps API并且目前已根据确切位置成功添加标记,但我还希望能够在国家/地区添加标记,而无需拥有该国家/地区的坐标。

这可能吗?

2 个答案:

答案 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');

将在您的地图上放置标记,位于美国,巴西和丹麦的直接中心。

enter image description here

答案 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().
});