我正在尝试使用Wakanda Studio中的Google maps api v3从地址获取lat长坐标。我也已经提交给了Wakanda论坛。我也搜索了v3文档,它基本上建议将JSON对象和回调函数传递给地理编码,该代码显示在下面的代码中。
地理编码调用也封装在codeAddress函数中。当我运行代码时,我可以看到包含lat长坐标的Geocoder JSON对象结果。但是,我收到一条奇怪的错误消息:
Uncaught Error Type: Object #<Object> has no method 'apply'
任何指针都会受到赞赏,如果您需要查看通过电子邮件发送的任何其他内容的屏幕截图/详细信息,请告诉我,因为我无法在堆栈溢出时发布屏幕截图。
button1.click = function button1_click (event)
{
$$('map').setCenter("London, England");
var address1 = "911 South Park Street, Kalamazoo, MI, 49001";
geocoder = new google.maps.Geocoder();
if(!geocoder) {
alert("no geocoder available");
} else {
alert("geocoder available");
}
codeAddress(address1);
};
function codeAddress(address) {
var address1 = address;
geocoder.geocode(
{'address': address1},
{onSuccess: function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//setCenter to mid
//addMarker
var lat = results[0].geometry.location.lat;
var lon = results[0].geometry.location.lon;
alert(lat);
} else {
alert("geocoder issue " + status);
}
}
});
}
答案 0 :(得分:2)
我在Wakanda尝试了类似的东西,但由于CORS(域的交叉引用),浏览器似乎阻止了调用,所以我使用了以下方法。
Wakanda客户 - &gt; Wakanda服务器 - &gt; Google Maps API - &gt;返回Wakanda服务器 - &gt;回到Wakanda客户
客户端代码:
button1.click = function button1_click (event) {
var address = $$("addressField").getValue();
address = encodeURI(address);
// Make call to server
response = $sources.businesses.getGeoCoordinates(address);
address_info = JSON.parse(response);
if (address_info && address_info.status === "OK") {
$$("business_latitude_field").setValue(
address_info.results[0].geometry.location.lat
);
$$("business_longitude_field").setValue(
address_info.results[0].geometry.location.lng
);
alert('We got latitude & longitude of your address.');
} else {
alert("Could not find latitude and longitude of your given address.");
}
}
服务器端代码 - 业务数据类中的getGeoCoordinates公共方法代码
function (address) {
// Call google geocode service to convert given address into lat / long
if (address) {
var api_url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=" + address;
xhr = new XMLHttpRequest();
xhr.open("GET", api_url);
xhr.send();
var response = xhr.responseText;
return response;
}
}
希望它有所帮助。