地理编码服务返回未捕获的类型错误:#<object>对象没有方法'apply'</object>

时间:2013-06-26 19:29:44

标签: google-maps types wakanda

我正在尝试使用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);
            }
        }
    });

}

1 个答案:

答案 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;
    }
}

希望它有所帮助。