0

我是使用 API 的新手,这就是我想要完成的,但我真的不知道如何去做。我有一个OpenCaching开发者密钥,我可以访问如下 URL:

test.opencaching.com/api/geocache?center=38.642,-94.754&limit=2&Authorization=DevKey

这将从坐标返回关于 2 个最近的地理藏宝的信息38.642, -94.754。该 URL 返回的内容类似于...

[{"name":"John Brown Hill","location":{"lat":38.55345,"lon":-94.91825}},{"name":"Ensor Farm","location":{"lat":38.7956167,"lon":-94.8052667}}]

我正在尝试使用此数据使用 Google Maps API 对其进行映射,但我不明白如何将数据保存到 JavaScript 对象。如果我对数据进行硬编码,我知道如何使用它,但我不知道如何从这个 URL 动态获取它。

4

1 回答 1

0

一种方法是使用 jQuery 并执行以下操作:

$.getJSON("the_url_to_data", function(data) {
    var map = new.google.maps.Map(document.getElementById("my_map"),{
    ...map params...
    };

    var cache = data.list.Caches // depending on how your JSON is actually returned.

    $.each(cache, function(i, cache) {
        var name = cache.name; // 
        var posi = new google.maps.LatLng(cache.lat, cache.lon);
        ...etc...
    }
};

$.getJSON返回一个 JSON 对象,然后匿名函数将其作为参数。

的示例 var cache = data.list.Caches 基于嵌套的 JSON。

实际上,Adobe 这里有一个很好的示例页面。

http://labs.adobe.com/technologies/spry/samples/data_region/JSONDataSetSample.html#Example4

因此,使用您的示例数据。您可以看到“位置”实际上是另一个嵌套的 JSON 对象。您可以通过data.location. 如果您遍历对象并将它们放在列表中,它只会使迭代更容易。然后使用相同的路径“点”格式访问那些较小的对象。例如,循环您的示例代码,将所有data.location对象放入一个名为coords(例如)的变量中,然后通过coords.lat&访问纬度和经度coords.lon

[{"name":"John Brown Hill","location":{"lat":38.55345,"lon":-94.91825}},{"name":"Ensor Farm","location":{"lat":38.7956167,"lon":-94.8052667}}]
于 2012-04-20T00:17:01.850 回答