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 адрес. Однако, поскольку вы будете проверять только страну, допустимая погрешность будет весьма мала.