问题的原因是 ArcGis locator task 使用的是标准化的 REST 协议,但是 REST API 可以被用户定制,因此返回结果可能不一致。解决方法是在 REST API 调用中使用相同的参数和参数值,并将结果解析为 JSON。以下是代码示例:
使用 ArcGis locator task:
// 初始化 locator task
var locator = new esri.tasks.Locator("http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer");
// 设置参数
var params = { address: { "SingleLine": "380 New York St, Redlands, CA 92373" }, outFields: ["*"] };
// 查询地址
locator.addressToLocations(params, function (results) {
console.log("Locator task results: ", results);
});
使用 REST API:
// 设置参数
var params = {
address: "380 New York St, Redlands, CA 92373",
f: "pjson" // 指定返回格式为 JSON
};
// 发送 GET 请求
$.getJSON("http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates", params, function (results) {
console.log("REST API results: ", results);
});