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

时间:2013-11-23 04:53:53

标签: google-maps-api-3 google-earth-plugin

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

我搜索了v3网站,但找不到解决这个问题的方法。运用         google.load(“maps”,“3.xx”);
代替         google.load(“maps”,“2.xx”); 根本不起作用,我收到了谷歌地图服务器的拒绝。

2 个答案:

答案 0 :(得分:2)

使用google.load("maps", "3.xx");的原因不起作用是必须提供传感器参数。即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

无论如何,我使用Google地图V3地理编码器和地球Api进行了working example,看看它是如何工作的。

这里还有一个代码示例,对术语“纽约”进行地理编码,并移动到插件和地图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 :(得分:1)

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

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