2013-11-23 4 views
3

Я разработал приложение некоторое время с помощью плагина GE. В этом приложении я использую функцию Geocode, которая зависит, конечно, от (карты, 2.xx). С устаревшим Google Maps V2 эта часть кода больше не работает. Мой код основан на образце приложения для геокодирования на Демо-сайте Google Earth (http://earth-api-samples.googlecode.com/svn/trunk/examples/geocoder.html), который больше не работает.Геокодирование в API Google Планета Земля с использованием карт V3

Я искал сайт v3, но не смог найти способ справиться с этим. Использование google.load ("maps", "3.xx");
вместо google.load ("maps", "2.xx"); просто не работает, и я получаю отказ от сервера Google Maps.

ответ

1

Вы можете загрузить скрипт v3 и изменить части геокодирования вашего проекта, но если вам нужно всего лишь геокодирование, вы можете напрямую вызвать Geocoding web service.

Или вы можете сохранить свой существующий код: Самый старый код v2 на самом деле все еще работает, просто GLatLng.x и y были never supported. Поэтому вместо point.x и point.y используйте point.lng() и point.lat() соответственно.

2

Причина использования google.load("maps", "3.xx"); не работает то, что вы MUST поставка датчик параметр. т.е. google.load('maps','3.6', { other_params: 'sensor=false' });

Параметр датчика в URL должен быть включен, и указывает использует ли данное приложение датчик (например, как GPS локатор), чтобы определить, местоположение пользователя. Мы оставили этот пример как переменную set_to_true_or_false, чтобы подчеркнуть, что вы должны установить это значение в как истинное, так и ложное.

См: https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API

Во всяком случае, я сделал working example использования Google Maps V3 Geocoder с Землей Апи для вас, чтобы увидеть, как это работает.

Кроме того, здесь есть пример кода, который геокодированием термин «Нью-Йорк» и переходит к первому найденному, как только загрузили плагин и API Карт (на всякий случай jsfiddle исчезает в будущем ...)

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
google.load('earth', '1'); 
google.load('maps','3.6', { other_params: 'sensor=false' }); // or true 

var ge = null; // GEPlugin 
var geocoder = null; // GClientGeocoder 

var init = function() { 
    google.earth.createInstance('map3d', initCallback, failureCallback); 
}; 

var initCallback = function(object) { 
    ge = object; 
    geocoder = new window.google.maps.Geocoder(); //v3 Geocoder 
    ge.getWindow().setVisibility(true); 

    // for example: geocode New York 
    geocode("New York"); 
}; 

var failureCallback = function(error) { 
    alert("Plugin Error: " + error); 
}; 

var geocode = function(address) { 
    geocoder.geocode({ 'address': address }, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     // do something with the result, such as flying to it... 
     var point = results[0].geometry.location; 
     var lookat = ge.createLookAt(''); 
     lookat.set(point.lat(), point.lng(), 100, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 0, 1000); 
     ge.getView().setAbstractView(lookat); 
    } else { 
     alert("Geocode Error: " + status); 
    } 
    }); 
}; 

google.setOnLoadCallback(init); 
</script> 
Смежные вопросы