Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除谷歌标记_Javascript_Html_Google Maps - Fatal编程技术网

Javascript 删除谷歌标记

Javascript 删除谷歌标记,javascript,html,google-maps,Javascript,Html,Google Maps,下面的代码加载谷歌地图,并每隔一秒钟左右刷新标记的位置。问题是代码不断地反复写入标记的位置。在写新的标记之前,有没有办法删除以前的标记 问题是,当它清除标记时,clearOverlays()它不会更新新的 任何帮助或建议都将不胜感激 此问题与前面的问题不同,因为问题在于调用clearOverlays()时;在函数refreshDiv()中,它将不会更新 <!DOCTYPE html> <html> <head> <style>

下面的代码加载谷歌地图,并每隔一秒钟左右刷新标记的位置。问题是代码不断地反复写入标记的位置。在写新的标记之前,有没有办法删除以前的标记

问题是,当它清除标记时,clearOverlays()它不会更新新的

任何帮助或建议都将不胜感激

此问题与前面的问题不同,因为问题在于调用clearOverlays()时;在函数refreshDiv()中,它将不会更新

<!DOCTYPE html>
<html>
  <head>


    <style>

      #map {
        height: 100%;
      }

      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>



  </head>
  <body onload='refreshDiv()'>
    <div id='map'></div>");




    <script>


    function refreshDiv()
    {
     clearOverlays();
     var refresher = setTimeout('refreshDiv()', 1000);
     updateMarker(map); 
    }


    function initMap()
     {
          window.map = new google.maps.Map(document.getElementById('map'), {
          zoom: 10,
          center: {lat: ".$latitude.", lng: ".$longitude."}
        });
     }


 function clearOverlays()
 {
  for (var i = 0; i < marker.length; i++ )
   {
    marker[i].setMap(null);
   }
   marker.length = 0;


   for (var i = 0; i < beach.length; i++ )
   {
    beach[i].setMap(null);
   }
   beach.length=0;
 }




      function updateMarker(map)
      {

      var beaches = [['"Jim"', 55.0102686,-1.5847956999999724],];


        var image = {
          url: '1.png',
          // This marker is 20 pixels wide by 32 pixels high.
          size: new google.maps.Size(20, 32),
          // The origin for this image is (0, 0).
          origin: new google.maps.Point(0, 0),
          // The anchor for this image is the base of the flagpole at (0, 32).
          anchor: new google.maps.Point(0, 32)
        };



        var shape = {
          coords: [1, 1, 1, 20, 18, 20, 18, 1],
          type: 'poly'
        };

        for (var i = 0; i < beaches.length; i++) {
          window.beach = beaches[i];
          window.marker = new google.maps.Marker({
            position: {lat: beach[1], lng: beach[2]},
            map: map,
            icon: image,
            shape: shape,
            title: beach[0],
            zIndex: beach[3]
          });
        }
      }


    </script>    



    <script async defer
    src='https://maps.googleapis.com/maps/api/js?key=AIzaSyBVQaENEYHY2g-mRhD6_tj1cSK8DhQoqHI&callback=initMap'>
    </script>

  </body>
</html>   

#地图{
身高:100%;
}
html,正文{
身高:100%;
保证金:0;
填充:0;
}
");
函数refreshDiv()
{
clearOverlays();
var refresher=setTimeout('refreshDiv()',1000);
更新标记器(map);
}
函数initMap()
{
window.map=new google.maps.map(document.getElementById('map'){
缩放:10,
中心:{lat:.$纬度.,lng:.$经度.}
});
}
函数clearOverlays()
{
对于(变量i=0;i
希望这个例子有帮助


删除标记
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#地图{
身高:100%;
}
/*可选:使示例页面填充窗口*/
html,正文{
身高:100%;
保证金:0;
填充:0;
}
#浮动面板{
位置:绝对位置;
顶部:10px;
左:25%;
z指数:5;
背景色:#fff;
填充物:5px;
边框:1px实心#999;
文本对齐:居中;
字体系列:“Roboto”,“sans-serif”;
线高:30px;
左侧填充:10px;
}
单击地图以添加标记

//在下面的示例中,当用户单击地图时,会出现标记。 //标记存储在一个数组中。 //然后,用户可以单击一个选项来隐藏、显示或删除标记。 var映射; var标记=[]; 函数initMap(){ var haightAshbury={lat:37.769,液化天然气:-122.446}; map=new google.maps.map(document.getElementById('map'){ 缩放:12, 中心:haightAshbury, mapTypeId:'地形' }); //单击映射时,此事件侦听器将调用addMarker()。 map.addListener('click',函数(事件){ 添加标记(事件标记); }); //在地图的中心添加标记。 addMarker(haightAshbury); } //将标记添加到地图并推送到阵列。 功能添加标记(位置){ var marker=new google.maps.marker({ 位置:位置,, 地图:地图 }); 标记器。推(标记器); } //在阵列中的所有标记上设置贴图。 函数setMapOnAll(映射){ 对于(var i=0;i
根据我的假设,您需要更新标记。 如果我是正确的,请检查下面的答案。因为我已经定义了他们的标记动态更新


谢谢。在谷歌上看到了,但问题是代码清除了标记,但不会再次更新。我添加了clearOverlays();但这似乎不允许事后更新。有什么想法吗?有一个类似的问题,你可以尝试该解决方案。我认为它应该有效。很久以前我就在谷歌地图api上工作过。我将尝试在我的旧代码文件中找出我是如何做到这一点的。感谢大家的帮助。但我不能真正使用这些答案。请原谅我的无知。。
<!DOCTYPE html>
<html>
  <head>
    <title>Remove Markers</title>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #floating-panel {
        position: absolute;
        top: 10px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
        text-align: center;
        font-family: 'Roboto','sans-serif';
        line-height: 30px;
        padding-left: 10px;
      }
    </style>
  </head>
  <body>
    <div id="floating-panel">
      <input onclick="clearMarkers();" type=button value="Hide Markers">
      <input onclick="showMarkers();" type=button value="Show All Markers">
      <input onclick="deleteMarkers();" type=button value="Delete Markers">
    </div>
    <div id="map"></div>
    <p>Click on the map to add markers.</p>
    <script>

      // In the following example, markers appear when the user clicks on the map.
      // The markers are stored in an array.
      // The user can then click an option to hide, show or delete the markers.
      var map;
      var markers = [];

      function initMap() {
        var haightAshbury = {lat: 37.769, lng: -122.446};

        map = new google.maps.Map(document.getElementById('map'), {
          zoom: 12,
          center: haightAshbury,
          mapTypeId: 'terrain'
        });

        // This event listener will call addMarker() when the map is clicked.
        map.addListener('click', function(event) {
          addMarker(event.latLng);
        });

        // Adds a marker at the center of the map.
        addMarker(haightAshbury);
      }

      // Adds a marker to the map and push to the array.
      function addMarker(location) {
        var marker = new google.maps.Marker({
          position: location,
          map: map
        });
        markers.push(marker);
      }

      // Sets the map on all markers in the array.
      function setMapOnAll(map) {
        for (var i = 0; i < markers.length; i++) {
          markers[i].setMap(map);
        }
      }

      // Removes the markers from the map, but keeps them in the array.
      function clearMarkers() {
        setMapOnAll(null);
      }

      // Shows any markers currently in the array.
      function showMarkers() {
        setMapOnAll(map);
      }

      // Deletes all markers in the array by removing references to them.
      function deleteMarkers() {
        clearMarkers();
        markers = [];
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>
  </body>
</html>