2014-10-29 2 views
0

Я реализовал полилинию для карты google для присоединения маркеров на карте google. Отображается полилиния, но она пытается соединить все точки (некоторые изолированные точки), которые создают нерегулярные формы. Пожалуйста, просмотрите снимки, нажав ссылку ниже.неправильная полилиния google maps

irregular polyline google maps irregular polyline google maps_1

мне нужно reomve, что неправильные формы. Есть ли способ, которым я могу это сделать? Если нет, я должен использовать некоторые другие функции карты google для ее реализации. Я использую базу данных mysql, из которой long long импортируется и отображается на карте с выводом xml. Каждая помощь будет оценена по достоинству. Если вы не поняли мои сомнения, не стесняйтесь просить подробного объяснения. Я буду рад прояснить каждый пункт.

Мой код ниже

function load() { 
    var map = new google.maps.Map(document.getElementById("map"), { 
    center: new google.maps.LatLng(23.00000, 80.00000), 
    zoom: 5, 
    mapTypeId: 'roadmap' 
    }); 
    var infoWindow = new google.maps.InfoWindow; 
var flightPlanCoordinates = new google.maps.MVCArray(); 
var bounds = new google.maps.LatLngBounds(); 

    // Change this depending on the name of your PHP file 
    downloadUrl("navigatormapxml.php", function(data) { 
    var xml = data.responseXML; 
    var gpsdata = xml.documentElement.getElementsByTagName("marker"); 
    for (var i = 0; i < gpsdata.length; i++) { 
     var id = gpsdata[i].getAttribute("id"); 
     var point = new google.maps.LatLng(
      parseFloat(gpsdata[i].getAttribute("lat")), 
      parseFloat(gpsdata[i].getAttribute("lng"))); 
     flightPlanCoordinates.insertAt(flightPlanCoordinates.length, point); 
     var speed = gpsdata[i].getAttribute("speed"); 
     var altitude = gpsdata[i].getAttribute("altitude"); 
     var html = "<b>Accuracy = +/- </b>" + id + "<br/><b> Speed = </b>" + speed + " Kmph"; 
     var icon = customIcons[id] || {}; 

     var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     shadow: icon.shadow 
     }); 

    bounds.extend(point); 
    map.fitBounds(bounds);  
    map.panToBounds(bounds); 
    bindInfoWindow(marker, map, infoWindow, html); 

    } 

var flightPath = new google.maps.Polyline({ 
path: flightPlanCoordinates, 
strokeColor: "#FF0000", 
strokeOpacity: 1.0, 
strokeWeight: 5 
    }); 
flightPath.setMap(map); 

    }); 

}

ответ

0

Ломаная создается с помощью массива, который вы прошли в вашем случае «flightPlanCoordinates» массива. Он присоединяется к первой точке массива ко второй точке, второй - к третьей точке и так далее. Если сам массив содержит эти точки, они будут отображаться в полилинии. Одним из решений было бы удаление нерегулярных точек из базы данных. Еще одна вещь, которую вам нужно проверить, заключается в том, находятся ли восстановленные точки в правильном порядке. Это должно устранить нерегулярные формы.

Смежные вопросы