如何根据国家/地区代码中心谷歌地图?

时间:2010-01-22 10:45:23

标签: google-maps

根据文档,我发现了这个: geocoder.setBaseCountryCode(COUNTRYCODE);

然而,即使我严格编写国家代码(两种情况:小资本),这都行不通。

任何帮助?

3 个答案:

答案 0 :(得分:4)

geocoder.setBaseCountryCode()不会使地图居中。这将为地理编码设定基准国家,因此,如果您尝试对“普利茅斯”进行地理编码,它将区分英国和马萨诸塞州的城市。

如果您想手动指定国家/地区代码,可以使用GClientGeocoder,如下所示:

var country_code = "ES";     // Change the country code here

function initialize() {
  if (GBrowserIsCompatible()) {
    var map = null;
    var geocoder = null;

    map = new GMap2(document.getElementById("map_canvas"));

    geocoder = new GClientGeocoder();

    if (geocoder) {
      geocoder.getLatLng(
        "Country: " + country_code,
         function(point) {
          if (point) {
            map.setCenter(point, 13);
          }
        }
      );
    }
  }
}

在这种情况下,无需使用设置setBaseCountryCode(),因为国家/地区代码显然是唯一的。


如果您使用的是Google Maps API的第3版,则可能需要使用google.loader.ClientLocation将地图自动居中到客户所在的国家/地区Google Demo。这使用客户端的IP地址来确定国家。

代码看起来像这样:

function initialize() {

  // Initialize default values
  var zoom = 3;
  var latlng = new google.maps.LatLng(37.4419, -100.1419);

  // If ClientLocation was filled in by the loader, use that info instead
  if (google.loader.ClientLocation) {
    zoom = 13;
    latlng = new google.maps.LatLng( google.loader.ClientLocation.latitude, 
                                     google.loader.ClientLocation.longitude);

  }

  var myOptions = {
    zoom: zoom,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }

  var map = new google.maps.Map(document.getElementById("map"), myOptions);
}

请注意,IP地址的地理定位不是一个非常可靠的科学。您将获得ISP的位置,这可能相当远,而且IP到位数据库并不总是最新的更新,因此您可能没有任何特定IP的数据地址。但是,由于您只检查国家/地区,因此误差幅度非常小。


答案 1 :(得分:1)

如果您正在寻找具有ISO国家/地区代码(包含2个和3个字符)的SQL文件,那么您可能还想查看@ http://27.org/isocountrylist/

答案 2 :(得分:0)

this Country database 获取信息。

选择所需国家/地区的首都城市,并围绕该地图居中。