Javascript 迭代响应数据以创建google地图对象
我有这样的数据:Javascript 迭代响应数据以创建google地图对象,javascript,jquery,arrays,json,google-maps,Javascript,Jquery,Arrays,Json,Google Maps,我有这样的数据: "meta":{"About thisdata"}, "objects": [{"beat": "1614", "block": "081XX W HIGGINS RD", "case_number": "JA100466", "classification": "/api/1.0-beta3/crimeclassification/83/", "community_area": "/api/1.0-beta3/communityarea/10/", "community_n
"meta":{"About thisdata"}, "objects": [{"beat": "1614", "block": "081XX W HIGGINS RD", "case_number": "JA100466", "classification": "/api/1.0-beta3/crimeclassification/83/", "community_area": "/api/1.0-beta3/communityarea/10/", "community_name": "Norwood Park", "community_number": 10, "community_slug": "norwood-park", "crime_date": "2016-12-30T18:00:00", "description": "$500 AND UNDER", "domestic": false, "fbi_code": "06", "id": "10801504", "iucr": "0820", "latitude": 41.985421498, "location_description": "STREET", "longitude": -87.829756604, "primary_type": "THEFT", "ward": 41, "year": 2016},
function getPoints() {
return [
new google.maps.LatLng(37.782551, -122.445368),
new google.maps.LatLng(37.782745, -122.444586),
new google.maps.LatLng(37.782842, -122.443688)
]
}
var makeMarkers = function () {
var result = [];
var lat, lng = [];
resp.objects.forEach(function(objects) {
lat.objects.latitude;
lng = objects.longitude;
return [new google.maps.LatLng(lat, lng)]
})
}
“对象”下总共有500个对象
我正在尝试创建其中的500个:新的google.maps.LatLng(37.782551,-122.445368)
要放入这样的数组:
"meta":{"About thisdata"}, "objects": [{"beat": "1614", "block": "081XX W HIGGINS RD", "case_number": "JA100466", "classification": "/api/1.0-beta3/crimeclassification/83/", "community_area": "/api/1.0-beta3/communityarea/10/", "community_name": "Norwood Park", "community_number": 10, "community_slug": "norwood-park", "crime_date": "2016-12-30T18:00:00", "description": "$500 AND UNDER", "domestic": false, "fbi_code": "06", "id": "10801504", "iucr": "0820", "latitude": 41.985421498, "location_description": "STREET", "longitude": -87.829756604, "primary_type": "THEFT", "ward": 41, "year": 2016},
function getPoints() {
return [
new google.maps.LatLng(37.782551, -122.445368),
new google.maps.LatLng(37.782745, -122.444586),
new google.maps.LatLng(37.782842, -122.443688)
]
}
var makeMarkers = function () {
var result = [];
var lat, lng = [];
resp.objects.forEach(function(objects) {
lat.objects.latitude;
lng = objects.longitude;
return [new google.maps.LatLng(lat, lng)]
})
}
在此返回:
function initMap () {
map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 41.881, lng: -87.629 },
zoom: 12,
mapTypeId: 'satellite'
});
heatmap = new google.maps.visualization.HeatmapLayer({
data: makeMarkers(), <-- Here
map: map
});
}
但是它不是返回一个新对象数组,而是返回500个新数组和一个google对象,因为它在forEach中。我不知道怎样才能得到我想要的。我在相当多的范围和数据迭代中挣扎
谢谢大家! 我假设
resp
对象就是您文章顶部的对象。首先,您需要在数组上使用map
,以实际获取一个数组
地图
Map的工作原理与forEach类似,因为它作用于数组中的每个元素。不同之处在于,在map
的回调中,您返回一个更新的元素
例:
上面的函数返回如下数组:[2,4,6,8]
。
注意回调方法中的返回
为了你的案子
您希望从resp
和map
获取对象数组,并将这些元素中的每一个元素映射到Google Maps对象(即Google.Maps.LatLng(lat,lng)
)
如果我正确地理解了您正在尝试做的事情,那么下面的操作应该会起作用。我建议大家多看看map
(还有filter
、forEach
和reduce
(foldr
在某些语言中)的简单例子
嗯,我不确定我是否解释得足够好。我会更简洁。我正试图从500个对象中提取所有的Lat和Lng,并创建一个包含500个新google.maps.Latling(纬度、经度)
实例的数组,就像谷歌在这里的文档-->在这种情况下,上面的应该可以做到。对于对象
数组的每个元素,将拉出lat/lng并创建一个新的Google Maps对象。它们都被映射到一个数组中并返回。Nvm我没有看到你们在那个里做了什么。你们可以阅读更多关于映射的内容。祝你好运