我想用javascript在谷歌Map上显示一个城市的一些区域的纬度。我有一个适当的数据列表,上面有area,lat,lon,下面给出了我的javascript代码
<!-- <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB5bEQj6ZsKK1pSOdWGhzL43s2R6pDr2-o"></script>
-->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB5bEQj6ZsKK1pSOdWGhzL43s2R6pDr2-o&callback=InitMap">
</script>
<script type="text/javascript">
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const uid = urlParams.get('uname')
let list=[];
var run;
var put =[];
collectArea();
function collectArea() {
$.ajax({
type : 'GET',
dataType : "json",
data: {userid : uid},
url : 'UserlocationServlet?method=collectArea',
success : function(data, status, xhr) {
$.each(data, function(i,obj) {
list.push([data[i].area,data[i].lat_no,data[i].lon_no]);
});
run=list;
InitMap(run);
},
error : function(xhr, status, error) {
alert(status);
}
});
}
function InitMap(locations) {
alert(locations);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: new google.maps.LatLng(23.8103,90.4125),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
</script>
但列表中的数据并没有显示在Map上,但我遵循了一个文档,其中包括
var locations = [
['Raj Ghat', 28.648608, 77.250925, 1],
['Purana Qila', 28.618174, 77.242686, 2],
['Red Fort', 28.663973, 77.241656, 3],
['India Gate', 28.620585, 77.228609, 4],
['Jantar Mantar', 28.636219, 77.213846, 5],
['Akshardham', 28.622658, 77.277704, 6]
];
这些区域显示在Map上。请帮我解决这个问题。
1条答案
按热度按时间nc1teljy1#
声明
initMap
函数作为脚本uri中的回调函数,但在您的情况下,这不一定是显式调用InitMap
函数,并希望将一些数据传递给InitMap
功能。因此,您应该指定collectArea
作为脚本uri中的回调。我还建议您在将json数据传递给
InitMap
函数-在我看来,最好是处理原始json数据,而不是担心数组索引,因此在下面的文章中,我修改了流程,以便json在被使用到initMap
功能。