Как я могу центрировать карту Google на основе кода страны? - PullRequest
2 голосов
/ 22 января 2010

По документации я узнал это: geocoder.setBaseCountryCode (CountryCode);

Однако это не сработало, даже если я жестко закодировал код страны (оба случая: малый капитал).

Любая помощь?

Ответы [ 3 ]

4 голосов
/ 22 января 2010

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(), потому что коды стран явно уникальны.


Если вы используете версию 3 API Карт Google, вы можете использовать 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-адресам не очень надежная наука. Вы будете получать информацию о местонахождении вашего интернет-провайдера, который может быть довольно далеко, и, кроме того, базы данных IP-адресов не всегда соответствуют последним изменениям, поэтому у вас может не быть данных для определенного IP адрес. Однако, поскольку вы будете проверять только страну, допустимая погрешность будет весьма мала.


1 голос
/ 22 января 2010

На всякий случай, если вы ищете файл SQL с кодами стран ISO (как 2, так и 3 знака), вы также можете посмотреть @ http://27.org/isocountrylist/

0 голосов
/ 22 января 2010

Получить информацию от этой базы данных стран .

Выберите столицу нужной страны и расположите вокруг нее карту.

...