gpt4 book ai didi

javascript - Google Maps API V3 - 管理折线

转载 作者:行者123 更新时间:2023-11-30 13:19:21 24 4
gpt4 key购买 nike

我有这个功能,点击标记后在与项目相关的点之间画一条线。

function showDetails(itemId)
{
var newlatlng = itemId.position;
var xmlhttp;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.open("GET", "index.php?r=items/ajaxdetails&id="+itemId.indice,
false);
xmlhttp.send();




var checkins = JSON.parse(xmlhttp.responseText);
var numeroCheckins = checkins.length;

var polylineCheckins = [];

var bounds = new google.maps.LatLngBounds();

for (counter = 0; counter< numeroCheckins; counter++)
{
var posizione = new google.maps.LatLng(checkins[counter].lat,
checkins[counter].long);
polylineCheckins[counter] = posizione;
bounds.extend(posizione);
}

var polyline = new google.maps.Polyline({
path: polylineCheckins,
strokeColor: "#FF0000",
strokeOpacity: 0.5,
strokeWeight: 5
});

polyline.setMap(map);

map.fitBounds(bounds);
}

一切正常,但如果多次调用此函数,则始终显示前一行。我尝试使用方法 setMap(null) 但没有成功,尝试重置折线。

我想在绘制新折线之前先删除之前的折线。

感谢您的支持

最佳答案

在 map 上只为 showDetails 保留一条折线的最简单方法是创建一个全局折线变量。这样,每次调用 showDetails 时都会修改全局变量。

现在,每次 showDetails 运行时都会创建一条新的折线,但不会返回对它的引用,所以我看不到将前一行的 map 设置为 null 的方法。

  // GLOBAL 
var detailsPolyline = new google.maps.Polyline({
strokeColor: "#FF0000",
strokeOpacity: 0.5,
strokeWeight: 5
});

showDetails 中:

detailsPolyline.setPath(polylineCheckins);
detailsPolyline.setMap(map);

map.fitBounds(bounds);

这是我使用的整个测试用例,因为我没有我自己创建对象的 php 文件

  var map;
var mapOptions = { center: new google.maps.LatLng(0.0, 0.0), zoom: 2,
mapTypeId: google.maps.MapTypeId.ROADMAP };

function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
showDetails([ {lat: 20, long: 0},
{lat: 20, long: 10},
{lat: 30, long: 20}]);

showDetails([ {lat: 10, long: 0},
{lat: 10, long: 10},
{lat: 20, long: 20}]);
}

var detailsPolyline = new google.maps.Polyline({
strokeColor: "#FF0000",
strokeOpacity: 0.5,
strokeWeight: 5
});

function showDetails(checkins)
{
var numeroCheckins = checkins.length;
var polylineCheckins = [];
var bounds = new google.maps.LatLngBounds();

for (counter = 0; counter< numeroCheckins; counter++)
{
var posizione = new google.maps.LatLng(checkins[counter].lat, checkins[counter].long);
polylineCheckins[counter] = posizione;
bounds.extend(posizione);
}

detailsPolyline.setPath(polylineCheckins);
detailsPolyline.setMap(map);

map.fitBounds(bounds);
}

关于javascript - Google Maps API V3 - 管理折线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851421/

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