使用Maps V3在Google Earth API中进行地理编码

3
我之前使用GE插件开发了一个应用程序。在该应用程序中,我使用了Geocode函数,该函数当然依赖于(地图,2.xx)。随着Google Maps V2的弃用,代码的这部分功能不再起作用。我的代码基于Google Earth Demo网站中有关地理编码的示例应用程序(http://earth-api-samples.googlecode.com/svn/trunk/examples/geocoder.html),但该网站也不再有效。
我搜索了v3网站,但找不到解决方法。只是使用 google.load("maps", "3.xx"); 而不是 google.load("maps", "2.xx"); 并不能解决问题,我从Google Maps服务器获得了拒绝回复。
2个回答

2
使用 google.load('maps','3.xx'); 没有效果的原因是您必须提供传感器参数,即 google.load('maps','3.6', { other_params: 'sensor=false' });

URL 的传感器参数必须包含,并指示该应用程序是否使用传感器(如 GPS 定位器)来确定用户的位置。我们将此示例作为一个变量设置为 true 或 false,以强调你必须明确地将其值设置为 true 或 false。

请参阅:https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API 无论如何,我为您制作了一个可工作的示例,演示了如何使用 Google 地图 V3 地理编码器与 Earth API。
以下是一个代码示例,对术语“纽约”进行地理编码,并在插件和地图 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>

1
你可以加载v3脚本并修改项目的地理编码部分,但如果你只需要地理编码,可以直接调用地理编码Web服务。或者,你也可以保留现有的代码:大多数旧的v2代码实际上仍然可以工作,只是GLatLng.x和y从未被支持。因此,使用point.lng()和point.lat()代替point.x和point.y。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接