簡體   English   中英

在谷歌地圖中每 5 秒刷新一次標記 position JavaScript API

[英]refreshing marker position every 5 seconds in google maps JavaScript API

      setInterval(function () {initMap();},5000);
       //setInterval(function () {changeMarkerPosition(marker);},5000);
          var map;

          function initMap() {
            var lat = document.getElementById( 'lat' ).value;
            var lng = document.getElementById( 'lng' ).value;

            map = new google.maps.Map(
                document.getElementById('map'),
                {center: new google.maps.LatLng(lat, lng), zoom: 16});

            var iconBase =
                'https://developers.google.com/maps/documentation/javascript/examples/full/images/';

            var icons = {
              parking: {
                icon: iconBase + 'parking_lot_maps.png'
              },
              library: {
                icon: iconBase + 'library_maps.png'
              },
              info: {
                icon: iconBase + 'info-i_maps.png'
              }
            };

            var features = [
              {
                position: new google.maps.LatLng(lat, lng),
                type: 'info'
              },
            ];

            // Create markers in the map.
            for (var i = 0; i < features.length; i++) {
              var marker = new google.maps.Marker({
                position: features[i].position,
                icon: icons[features[i].type].icon,
                map: map
              });
            };
          }

這是我的代碼,它每 5 秒刷新一次整個 map,而不是我想每 5 秒刷新一次標記 position,因為我從兩個不斷更新的輸入字段中獲取緯度和經度

請注意,每次您調用 google.maps.Map() class 時,您都在創建一個 Map 負載,其計費為動態地圖 SKU 您可以利用google.maps.Marker class 的setPosition方法,而不是每 5 秒創建一次 map 加載以更新標記 position

這是一個示例代碼,我每 5 秒使用setPosition更改標記 position。

這是代碼的細分:

這是我設置標記的初始 position

 marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        title: 'Hello World!'
    });

這是我的坐標數組,我的標記應將 position 更改為:

    markerList = [
        [-33.950198, 151.259302],
        [-33.923036, 151.259052],
        [-34.028249, 151.157507],
        [-33.80010128657071, 151.28747820854187]
    ];

然后,我通過數組中的所有坐標對 go 使用了for 循環 然后在更改標記 position 時將setTimeout設置為 5 秒間隔:

for (var i = 0; i < markerList.length; i++) {
        (function(index) {
            setTimeout(function() {
                marker.setPosition(new google.maps.LatLng(markerList[index][0], markerList[index][1]));
            }, i * 5000);
        })(i);
    }

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM