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