2013-11-23 51 views
3

前段时间我使用GE插件开发了一个应用程序。在那个应用程序中,我使用地理编码功能,这当然取决于(地图,2.xx)。随着Google Maps V2的弃用,这部分代码不再有效。我的代码基于Google地球演示网站(http://earth-api-samples.googlecode.com/svn/trunk/examples/geocoder.html)中的地理编码示例应用程序,该应用程序不再有效。使用Maps V3在Google Earth API中进行地理编码

我搜索了v3网站,但找不到处理这个问题的方法。 google.load使用 (“maps”,“3.xx”);
而不是 google.load(“maps”,“2.xx”); 根本不起作用,我从Google地图服务器收到拒绝。

回答

1

您可以加载v3脚本并修改项目的地理编码部分,但如果您只需要进行地理编码,则可以直接拨打Geocoding web service

或者,您可以保留现有的代码:大多数旧的v2代码实际上仍然有效,只是GLatLng.x和y是never supported。因此,分别使用point.lng()和point.lat()来代替point.x和point.y。

2

使用google.load("maps", "3.xx");不起作用的原因是您提供传感器参数的必要条件必须提供。即google.load('maps','3.6', { other_params: 'sensor=false' });

URL的传感器参数必须包括在内,并且表示 本申请是否使用一个传感器(例如,GPS定位器) 确定用户的位置。我们将此示例作为变量 set_to_true_or_false留下,以强调您必须明确地将此值设置为 true或false。

参见:https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API

总之,我做了使用谷歌地图V3地理编码器与地球API给你看它是如何工作的working example

而且,这里是地理编码的术语“纽约”,并移动到一旦发现插件和Google地图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> 
相关问题