简体   繁体   English

循环遍历 JSON 以在 Google 地图上放置标记

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM