javascript - jQuery 解析数据并获取纬度和经度并插入到 Google map 中`

标签 javascript jquery json chartbeat

我使用 jQuery 从以下 URL 获取 JSON:

http://api.chartbeat.com/live/geo/v3/?apikey=fakekeytoshowtheurl&host=example.com

这是我得到的 JSON 示例:

"lat_lngs": [[25, -80, 9], [26, -80, 6], [27, -80, 1], [29, -98, 2], [29, -95, 7], [30, -97, 3], [33, -117, 6], [33, -112, 25], [33, -111, 33], [34, -112, 1], [34, -111, 1], [36, -109, 1], [38, -97, 2], [40, -73, 1], [42, -78, 2]]

我正在尝试使用 jQuery 获取每个 lat_lngs 并运行一个函数。

这是我目前无法使用的代码。

function addMarker(latitude, longitude) {
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(latitude, longitude),
        map: map
    });
}

$.get('http://api.chartbeat.com/live/geo/v3/?apikey=fakekeytoshowtheurl&host=example.com', function(data) {
    $.each(data['lat_lngs'], function() {
        var latlng = data['lat_lngs'].split(',');
        addMarker(latlng[0], latlng[1]);
    })
});

这不起作用,我收到一条错误消息,说对象[对象数组]没有方法“分割”,并且无论我尝试了什么,我都无法让任何东西起作用。我只想从列出的每个 lat_lngs 中获取前两个数字,然后运行函数 addMarker(lat, long)。

有人有想法吗?

最佳答案

$.each(data['lat_lngs'], function(index, value) {
    addMarker(value[0], value[1]);
})

说明:data['lat_lngs'] 是数组的数组。当您使用 $.each 对其进行迭代时,每次迭代都会接收 data['lat_lngs'] 数组的一个元素作为其

每个元素本身就是一个数组。 (不是字符串!不需要 split() 任何东西。)

$.each 还将 this 值设置为等于当前迭代的值。所以你也可以这样做:

$.each(data['lat_lngs'], function() {
    addMarker(this[0], this[1]);
})

关于javascript - jQuery 解析数据并获取纬度和经度并插入到 Google map 中`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666740/

相关文章:

java - 如何在 JSON 文件的不同数组和对象中导航

jquery - 光滑的 slider - 如何创建在事件中使用的函数?

javascript - 如何设置鼠标悬停元素上时继续显示悬停效果?

jquery - 循环具有数据属性的表行

javascript - 事后值(value)变动

javascript - ASP.NET Web 应用程序相对路径

javascript - MVC 将 json 数据传递给 Controller

javascript - 设置对 document.location.search 的引用

javascript - jquery 实时数据不响应 DOM

javascript - ReactJS 无法引用创建的状态