[英]Looping through JSON to place markers on a Google map
I am trying to generate a google map using jQuery and javascript.我正在尝试使用 jQuery 和 javascript 生成谷歌地图。 The values for latitude and longitude are stored in a JSON file.
纬度和经度的值存储在 JSON 文件中。 When the user clicks the state name the needs to get generated.
当用户单击状态名称时,需要生成。
The problem with my code is that a graph is getting genrated for only index[0]
.我的代码的问题是只为
index[0]
生成了一个图。 My for loop is not working appropriately.我的 for 循环工作不正常。 A graph for New York is generated but it points to Nepal rather than New York.
生成了纽约的图表,但它指向尼泊尔而不是纽约。 Here is my code:
这是我的代码:
for (var i in data.universitylist) {
var lat = data.universitylist[i].lat;
var lng = data.universitylist[i].lng;
var map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: lat,
lng: lng
},
scrollwheel: false,
zoom: 8
});
var marker = new google.maps.Marker({
map: map,
position: {
lat: lat,
lng: lng
},
title: 'Hello World!'
});
};
The JSON file: JSON 文件:
var data = {
"universitylist": [{
"Name": "Columbia University",
"City": "New York",
"State": "NY",
"lat": 40.7127,
"lng": 74.0059
},{
"Name": "Stanford University",
"City": "Stanford,",
"State": "CA",
"lat": 37.0000,
"lng": 120.0000
},{
"Name": "Duke University",
"City": "Durham",
"State": "NC",
"lat": 35.5000,
"lng": 80.0000
},{
"Name": "University of Pennsylvania",
"City": "Philadelphia",
"State": "PA",
"lat": 41.0000,
"lng": 77.5000
},{
"Name": "Northcentral University",
"City": "Prescott Valley",
"State": "AZ",
"lat": 34.0000,
"lng": 112.0000
},{
"Name": "Johns Hopkins University",
"City": "Baltimore",
"State": "MD",
"lat": 39.0000,
"lng": 76.7000
}, {
"Name": "Northwestern University",
"City": "Evanston",
"State": "IL",
"lat": 40.0000,
"lng": 89.0000
},{
"Name": "Rice University",
"City": "Houston",
"State": "TX",
"lat": 31.0000,
"lng": 100.0000
},{
"Name": "University of Southern California",
"City": "Los Angeles",
"State": "CA",
"lat": 37.0000,
"lng": 120.0000
},{
"Name": "Georgia Institute of Technology",
"City": "Atlanta",
"State": "GA",
"lat": 32.9605,
"lng": 83.1132
}
]
};
Your problem is you are re-generating the map for every iteration within the for
loop.您的问题是您正在为
for
循环中的每次迭代重新生成地图。
Try taking it outside, and change your for in
to a for
:-尝试将它带到外面,并将您的
for in
更改for in
for
:-
var data = { "universitylist": [{ "Name": "Columbia University", "City": "New York", "State": "NY", "lat": 40.7127, "lng": 74.0059 }, { "Name": "Stanford University", "City": "Stanford,", "State": "CA", "lat": 37.0000, "lng": 120.0000 }, { "Name": "Duke University", "City": "Durham", "State": "NC", "lat": 35.5000, "lng": 80.0000 }, { "Name": "University of Pennsylvania", "City": "Philadelphia", "State": "PA", "lat": 41.0000, "lng": 77.5000 }, { "Name": "Northcentral University", "City": "Prescott Valley", "State": "AZ", "lat": 34.0000, "lng": 112.0000 }, { "Name": "Johns Hopkins University", "City": "Baltimore", "State": "MD", "lat": 39.0000, "lng": 76.7000 }, { "Name": "Northwestern University", "City": "Evanston", "State": "IL", "lat": 40.0000, "lng": 89.0000 }, { "Name": "Rice University", "City": "Houston", "State": "TX", "lat": 31.0000, "lng": 100.0000 }, { "Name": "University of Southern California", "City": "Los Angeles", "State": "CA", "lat": 37.0000, "lng": 120.0000 }, { "Name": "Georgia Institute of Technology", "City": "Atlanta", "State": "GA", "lat": 32.9605, "lng": 83.1132 }] }; var map = new google.maps.Map(document.getElementById('map'), { center: { lat: 33, lng: 100 }, scrollwheel: false, zoom: 3 }); for (var i = 0; i < data.universitylist.length; i++) { var lat = data.universitylist[i].lat; var lng = data.universitylist[i].lng; console.log(i, lat, lng); var marker = new google.maps.Marker({ map: map, position: { lat: lat, lng: lng }, title: 'Hello World!' }); };
#map { height: 400px; }
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script> <div id="map"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.