У меня есть эти Lat
и Lon
, и я проанализировал их с помощью PHP из базы данных MySQL.
Как я могу перебрать эти lat,lon
пары на основе ORIGF_ID
, чтобы показать их как многоугольникив Google Maps?
<markers>
<marker ORIGF_ID="1" OBJECTID="1" lat="34.5127" lng="69.3182"/>
<marker ORIGF_ID="1" OBJECTID="2" lat="34.5128" lng="69.3174"/>
<marker ORIGF_ID="1" OBJECTID="3" lat="34.5134" lng="69.3175"/>
<marker ORIGF_ID="1" OBJECTID="4" lat="34.5133" lng="69.3183"/>
<marker ORIGF_ID="1" OBJECTID="5" lat="34.5127" lng="69.3182"/>
<marker ORIGF_ID="2" OBJECTID="6" lat="34.5145" lng="69.3099"/>
<marker ORIGF_ID="2" OBJECTID="7" lat="34.5144" lng="69.3104"/>
<marker ORIGF_ID="2" OBJECTID="8" lat="34.5139" lng="69.3104"/>
<marker ORIGF_ID="2" OBJECTID="9" lat="34.514" lng="69.3099"/>
<marker ORIGF_ID="2" OBJECTID="10" lat="34.5145" lng="69.3099"/>
</markers>
У меня есть эти коды, но показаны 2 многоугольника, соответствующих ORIGF_ID
из 1 и 2, но они отображаются как один многоугольник.
Проанализировал xml с php
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
Коды полигонов, которые зацикливаются на основе ORIGF_ID:
var path=[];
var paths=[];
for (var i=0; i<markers.length; i++)
{
var lat = markers[i].getAttribute('lat');
var lng = markers[i].getAttribute('lng');
var pt = new google.maps.LatLng(lat, lng);
var FID = markers[i].getAttribute('ORIG_FID');
if (!paths[FID])
paths[FID] = [];
paths[FID].push(pt);
}
for (var path in paths)
{
if (paths.hasOwnProperty(path)) {
path = paths[path];
// Construct the polygon.
var polygon = new google.maps.Polygon({
paths: path,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: '#FF0000',
fillOpacity: 0.35`});
polygon.setMap(map);
// Add a listener for the click event.
polygon.addListener('click', showArrays);
}
}
infoWindow = new google.maps.InfoWindow;
});
}
ajax-коды, использующие файл php:
function downloadUrl(url, callback)
{
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function()
{
if (request.readyState == 4)
{
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}