gpt4 book ai didi

javascript - Google Maps API - 在从 ajax 页面加载新数据之前清除标记、多段线

转载 作者:行者123 更新时间:2023-11-30 07:43:31 25 4
gpt4 key购买 nike

我从 ajax 页面加载标记和折线,每个请求数据都显示在索引页上,现在我想在从 ajaxPage 获取新数据之前清除数据(markers,polylines,...)

索引页:

var gmarkers = []; 
var map = null;
function initialize() {
var myOptions = {
zoom: 15,
center: new google.maps.LatLng(35, 53),
// mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
mapTypeId: google.maps.MapTypeId.ROADMAP
}

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map, 'click', function() {
infowindow.close();
});

}

var infowindow = new google.maps.InfoWindow(
{
size: new google.maps.Size(150,50)
});

function myclick(i) {
google.maps.event.trigger(gmarkers[i], "click");
}

function createMarker(latlng, name, html) {
var contentString = html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
zIndex: Math.round(latlng.lat()*-100000)<<5
});

google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});
// save the info we need to use later for the side_bar
gmarkers.push(marker);
}

Ajax 页面(record2.php):

var polylines = [];

var beaches = [
['Bondi Beach',10,15, 4],
['Coogee Beach',11,16, 5],
['Cronulla Beach',13,15, 3],
['Manly Beach',13,17, 2],
['Maroubra Beach',12,10, 1]
];

for (var i = 0; i < beaches.length; i++) {
var beach = beaches[i];
var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
// var polylines = new google.maps.LatLng(beach[1], beach[2]);
polylines.push(new google.maps.LatLng(beach[1], beach[2]));

var marker = createMarker(myLatLng,"This place",beach[0])
}

var routes = new google.maps.Polyline({
path: polylines,
strokeColor: "#FF0000",
strokeOpacity: 0.6,
strokeWeight: 4
});

routes.setMap(map);

问题:在从 ajax 页面 加载新数据之前清除折线、标记等的简单方法?

/--- 编辑 ---/
我检查了 Google Maps API v3: How to remove all markers? 的答案但是请求页面的第一个请求是响应,下一个请求将不起作用,我想我错误地添加了一个清晰的 map 功能

从索引调用 AjaxPage:

$(document).ready(function(){
$('#loader').hide();

$("#search_button").click(function() {

$('#loader').fadeIn(200);
$('#login_group').slideUp(200);
$.post("record2.php", {
time: $('#login_username').val()

}, function(response){
setTimeout("finishAjax('login_group', '"+escape(response)+"')", 200);
});
return false;
});
});

function finishAjax(id, response){
$('#loader').slideUp(300);
$('#'+id).html(unescape(response));
$('#'+id).fadeIn(200);

}

最佳答案

创建变量标记数组。然后在创建标记时,添加标记数组。你可以试试这个。

var markerArrays = new Array();
for (var i = 0; i < beaches.length; i++) {
var beach = beaches[i];
var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
// var polylines = new google.maps.LatLng(beach[1], beach[2]);
polylines.push(new google.maps.LatLng(beach[1], beach[2]));

var marker = createMarker(myLatLng,"This place",beach[0]);
markerArrays.push(marker);
}

$.each(markerArrays, function(index, val) {
val.setMap(null);
});

关于javascript - Google Maps API - 在从 ajax 页面加载新数据之前清除标记、多段线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11734392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com