Javascript 谷歌地图,多段线绘制;额外的;线路-can';我看不出是什么';发生什么事了
我从一个数据库中查询了2组坐标,显示了一条我们乘坐气球飞行的轨迹。 我在起飞和着陆时放置标记。 现在,我想在两条轨迹中的起飞和着陆之间绘制一条多段线,但出于某种原因,也要在与多段线链接的两个着陆点之间绘制一条多段线。 例如: 我不知道会发生什么-我尝试在每个循环中将坐标数组的长度写为0,但没有帮助Javascript 谷歌地图,多段线绘制;额外的;线路-can';我看不出是什么';发生什么事了,javascript,php,google-maps,google-polyline,Javascript,Php,Google Maps,Google Polyline,我从一个数据库中查询了2组坐标,显示了一条我们乘坐气球飞行的轨迹。 我在起飞和着陆时放置标记。 现在,我想在两条轨迹中的起飞和着陆之间绘制一条多段线,但出于某种原因,也要在与多段线链接的两个着陆点之间绘制一条多段线。 例如: 我不知道会发生什么-我尝试在每个循环中将坐标数组的长度写为0,但没有帮助 function load() { var lastlat; var lastlng; var map = new google.maps.Map(document.getEl
function load() {
var lastlat;
var lastlng;
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(55.44, 11.80),
zoom: 17,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow;
var flightPlanCoordinates = [];
<?php while($row = mysql_fetch_array($result)) { ?>
// Change this depending on the name of your PHP file
flightPlanCoordinates.length = 0;
downloadUrl("phpsqlajax_genxmlall.php?LogDate=<?php echo $row['Log_Date'] ?>&TimeOfDay=<?php echo $row['TimeOfDay'] ?>&Log_Name=<?php echo $row['Log_Name'] ?>", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
flightPlanCoordinates[i] = new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng"));
}
flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
strokeColor: "#0000FF",
strokeOpacity: 0.8,
strokeWeight: 2
});
flightPath.setMap(map);
//Show first marker
var name = markers[0].getAttribute("name");
var address = markers[0].getAttribute("address");
var type = markers[0].getAttribute("BalloonStatus");
var point = new google.maps.LatLng(
parseFloat(markers[0].getAttribute("lat")),
parseFloat(markers[0].getAttribute("lng")));
var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/> Status : "+type;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
lastlat = markers[0].getAttribute("lat");
lastlng = markers[0].getAttribute("lng");
//Show last marker
var point1 = new google.maps.LatLng(
parseFloat(markers[0].getAttribute("lat")),
parseFloat(markers[0].getAttribute("lng")));
var point2 = new google.maps.LatLng(
parseFloat(markers[markers.length-1].getAttribute("lat")),
parseFloat(markers[markers.length-1].getAttribute("lng")));
var distance = getDistance(point1, point2);
var distancekm = Math.round((distance/1000)*10)/10;
var name = markers[markers.length-1].getAttribute("name");
var address = markers[markers.length-1].getAttribute("address");
var type = markers[markers.length-1].getAttribute("BalloonStatus");
var point = new google.maps.LatLng(
parseFloat(markers[markers.length-1].getAttribute("lat")),
parseFloat(markers[markers.length-1].getAttribute("lng")));
var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/>Distance : "+ distancekm +" km<br/> Status : "+type;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
lastlat = markers[markers.length-1].getAttribute("lat");
lastlng = markers[markers.length-1].getAttribute("lng");
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markers.length; i++) {
bounds.extend(new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng")));
}
map.fitBounds(bounds);
}); //Downlaod URL
<?php } ?> //End DB Loop
} // Load
函数加载(){
var lastlat;
var lastlng;
var map=new google.maps.map(document.getElementById(“map”){
中心:新google.maps.LatLng(55.44,11.80),
缩放:17,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infoWindow=new google.maps.infoWindow;
var FlightPlan坐标=[];
//根据PHP文件的名称更改此选项
flightPlanCoordinates.length=0;
下载URL(“phpsqlajax_genxmlall.php?LogDate=&TimeOfDay=&Log_Name=”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址+”
状态:“+类型;
var icon=customIcons[type]| |{};
var marker=new google.maps.marker({
地图:地图,
位置:点,,
icon:icon.icon,
阴影:icon.shadow
});
bindInfoWindow(标记、地图、infoWindow、html);
lastlat=标记[0]。getAttribute(“lat”);
lastlng=标记[0]。获取属性(“lng”);
//显示最后一个标记
var point1=new google.maps.LatLng(
parseFloat(标记[0].getAttribute(“lat”),
parseFloat(标记[0].getAttribute(“lng”));
var point2=新的google.maps.LatLng(
parseFloat(markers[markers.length-1].getAttribute(“lat”),
parseFloat(markers[markers.length-1].getAttribute(“lng”));
var距离=getDistance(点1,点2);
var distancekm=数学圆((距离/1000)*10)/10;
var name=markers[markers.length-1].getAttribute(“名称”);
var address=markers[markers.length-1].getAttribute(“地址”);
var type=markers[markers.length-1].getAttribute(“气球状态”);
var point=new google.maps.LatLng(
parseFloat(markers[markers.length-1].getAttribute(“lat”),
parseFloat(markers[markers.length-1].getAttribute(“lng”));
var html=“”+name+”
“+address+”
距离:“+Distance km+”km
状态:“+type;
var icon=customIcons[type]| |{};
var marker=new google.maps.marker({
地图:地图,
位置:点,,
icon:icon.icon,
阴影:icon.shadow
});
bindInfoWindow(标记、地图、infoWindow、html);
lastlat=markers[markers.length-1].getAttribute(“lat”);
lastlng=markers[markers.length-1].getAttribute(“lng”);
var bounds=new google.maps.LatLngBounds();
对于(var i=0;i
在两个异步回调函数中使用相同的坐标数组。在回调函数运行之前,它将在回调函数之外重置为0长度,因此您将在第二个回调函数中得到两条多段线的所有坐标
像这样的方法应该会奏效:
function load() {
var lastlat;
var lastlng;
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(55.44, 11.80),
zoom: 17,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow;
<?php while($row = mysql_fetch_array($result)) { ?>
downloadUrl("phpsqlajax_genxmlall.php?LogDate=<?php echo $row['Log_Date'] ?>&TimeOfDay=<?php echo $row['TimeOfDay'] ?>&Log_Name=<?php echo $row['Log_Name'] ?>", function(data) {
// declare a new array of coordinates in each callback function.
var flightPlanCoordinates = [];
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
flightPlanCoordinates[i] = new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng"));
}
flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
strokeColor: "#0000FF",
strokeOpacity: 0.8,
strokeWeight: 2
});
flightPath.setMap(map);
//Show first marker
var name = markers[0].getAttribute("name");
var address = markers[0].getAttribute("address");
var type = markers[0].getAttribute("BalloonStatus");
var point = new google.maps.LatLng(
parseFloat(markers[0].getAttribute("lat")),
parseFloat(markers[0].getAttribute("lng")));
var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/> Status : "+type;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
lastlat = markers[0].getAttribute("lat");
lastlng = markers[0].getAttribute("lng");
//Show last marker
var point1 = new google.maps.LatLng(
parseFloat(markers[0].getAttribute("lat")),
parseFloat(markers[0].getAttribute("lng")));
var point2 = new google.maps.LatLng(
parseFloat(markers[markers.length-1].getAttribute("lat")),
parseFloat(markers[markers.length-1].getAttribute("lng")));
var distance = getDistance(point1, point2);
var distancekm = Math.round((distance/1000)*10)/10;
var name = markers[markers.length-1].getAttribute("name");
var address = markers[markers.length-1].getAttribute("address");
var type = markers[markers.length-1].getAttribute("BalloonStatus");
var point = new google.maps.LatLng(
parseFloat(markers[markers.length-1].getAttribute("lat")),
parseFloat(markers[markers.length-1].getAttribute("lng")));
var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/>Distance : "+ distancekm +" km<br/> Status : "+type;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
lastlat = markers[markers.length-1].getAttribute("lat");
lastlng = markers[markers.length-1].getAttribute("lng");
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markers.length; i++) {
bounds.extend(new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng")));
}
map.fitBounds(bounds);
}); //Download URL
<?php } ?> //End DB Loop
} // Load
函数加载(){
var lastlat;
var lastlng;
var map=new google.maps.map(document.getElementById(“map”){
中心:新google.maps.LatLng(55.44,11.80),
缩放:17,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infoWindow=new google.maps.infoWindow;
下载URL(“phpsqlajax_genxmlall.php?LogDate=&TimeOfDay=&Log_Name=”,函数(数据){
//在每个回调函数中声明一个新的坐标数组。
var FlightPlan坐标=[];
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址+”
状态:“+类型;
var icon=customIcons[type]| |{};
var marker=new google.maps.marker({
地图:地图,
位置:点,,
icon:icon.icon,
阴影:icon.shadow
});
宾丁