在构建来自AJAX请求的数据方面遇到Google Maps API问题。这就是我现在所处的位置:
const getMarkerData = function ( googlemap, $hook ) {
const hData = $hook.dataset;
const format = "json";
const dataType = "json";
const markerData = [];
let item = null;
core.api.collection( hData.url, format, dataType ).done(( response ) => {
const items = response.items;
if ( response.items ) {
let i = items.length;
for ( i; i--; ) {
item = items[ i ];
markerData.push({
position: new google.maps.LatLng(item.location.mapLat, item.location.mapLng),
title: item.location.addressTitle
});
}
}
const googleMapMarkers = new google.maps.Marker( markerData );
googleMapMarkers.setMap( googlemap );
});
};
根据我的理解,Google地图需要JSON中的数据,而不是数组中的数据。我可以调整什么来获得它?
新修订的工作代码:
core.api.collection( hData.url, format, dataType ).done(( response ) => {
const items = response.items;
if ( response.items ) {
let i = items.length;
for ( i; i--; ) {
item = items[ i ];
marker = new google.maps.Marker({
position: new google.maps.LatLng(item.location.mapLat, item.location.mapLng),
title: item.location.addressTitle,
map: googleMap
});
googleMapMarkers.push(marker);
}
}
});
答案 0 :(得分:1)
您正在尝试将单个标记视为标记数组。
const googleMapMarkers = new google.maps.Marker( markerData );
这不会奏效。
为什么不在遍历项目时创建google.maps.Marker
的实例,并将它们保存到数组中。您还可以在该迭代中设置每个地图。
var googleMapMarkers = [];
for ( i; i--; ) {
item = items[ i ];
markerData.push({
position: new google.maps.LatLng(item.location.mapLat, item.location.mapLng),
title: item.location.addressTitle
});
markerData.setMap(googleMap);
googleMapMarkers.push(markerData);
}
这是假设markerData是一个有效的谷歌地图标记。如果不是您可能需要更多代码来构建该对象,但它很容易完成并且API参考中有大量示例。