2010-01-22 170 views

回答

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(),因爲國家代碼顯然是獨一無二的。


如果您使用的是谷歌地圖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的數據地址。然而,由於你只是在檢查國家,所以誤差幅度會很小。


+0

感謝您的回覆,我送國家代碼作爲一個變量,下面的部分與我的工作: geocoder.getLatLng( 「國家」 + COUNTRY_CODE, 功能(點){ 如果( point){ map.setCenter(point,13); } } ); – Luci 2010-01-22 12:39:02

+0

非常好! .... – 2010-01-22 12:45:21

+0

@DanielVassallo今天仍然適用嗎?我也想把谷歌地圖集中到用戶的國家。我試圖調用google.loader控制檯顯示「google.loader未定義」 – aidonsnous 2017-05-01 08:23:03

1

以防萬一,如果你正在尋找具有ISO國家代碼(包括2首第3個字符)SQL文件,那麼你也可能想看看@http://27.org/isocountrylist/