Hoe te kiezen tussen markeringen en functies voor het tekenen van objecten met open lagen?

Gisteren probeerde ik de eerste mock-ups van mijn GPS-trackerinterface te maken en was ik bezig met het verkennen van de beschikbare OpenLayers-objecten om op een kaart te tekenen.

Ik begon met een eenvoudige taak: een markering op een kaart plaatsen op een laag Markers. Ik heb de juiste afbeelding aan de markering toegevoegd, heb geleerd hoe ik deze op een kaart moet verplaatsen en heb een pop-up toegevoegd aan de onclick-gebeurtenis die aanvullende informatie over die markering opent. Werkt goed. Omdat ik wilde dat deze markering het voertuig zou vertegenwoordigen, zou de volgende stap erin bestaan ​​om de inhoud van de Popup van de marker te vullen met AJAX. Wanneer de onclick-gebeurtenis plaatsvindt, stuur ik de ID van de markering naar mijn python-script, haal ik de nieuwste gegevens op uit mijn postGIS-database en update ik de markering en de bijbehorende pop-up.

Maar toen zag ik in de OpenLayers-documentatie dat markeringen geen ID-kenmerk hebben en dat ik waarschijnlijk uiteindelijk een vector- of feature-object moet gebruiken. OK, beiden hebben id-attribuut en createMarker-methoden, dus ik zal mijn markeringen gemakkelijk overzetten naar Functies/Vectoren. Daarna zag ik een voorbeeld op het web waar iemand zojuist id-attribuut op de markering als volgt initialiseert:

marker = new OpenLayers.Marker(new OpenLayers.LonLat(90,10),icon.clone());
marker.id = 353;

En het werkt goed, ik kan nu verschillende kenmerken aan mijn markeringen toevoegen en de zonodig gebruiken. Bijvoorbeeld:

marker.id = 353;
marker.popups_id = 382;
marker.data = "Marker for a vehicle";

Dus, nadat ik in het begin wat ik wilde gedaan had, begon ik me af te vragen: wat zijn de belangrijkste redenen voor deze 3 verschillende klassen als ik Marker kan nemen en het met verschillende gegevens kan vullen om het op een functie te laten lijken. Doe ik het verkeerd, is er een betere aanpak? Het lijkt mij dat ik mijn kaartobjecten alleen kon maken met behulp van Markers, maar ik wil hier later geen spijt van krijgen als ik de limieten heb bereikt. Zijn er maat/prestatielimieten en aanbevelingen voor het gebruik van markeringen en wanneer functies of is alles gebaseerd op testen en refactoren zoals nodig?

Gewoon om toe te voegen, mijn applicatie zal een eenvoudige GPS-tracker zijn. Dus ik zal OpenLayers gebruiken om objecten weer te geven, te verplaatsen, te animeren, hun eigenschappen en vergelijkbare taken te tonen. Ik moet op hetzelfde moment minimaal 300 actieve objecten op een kaart ondersteunen en hun coördinaten minstens elke 15 seconden vernieuwen.

TIA voor al uw adviezen die me mogelijk in de goede richting zouden kunnen leiden om de effectieve interface voor mijn toepassing te creëren.

2

1 antwoord

Ik zou persoonlijk gaan met functies boven markeringen. Point-functies (en alle functies) maken labeling mogelijk en kunnen in verschillende vormen en kleuren worden weergegeven, zoals cirkels, x, vierkant enzovoort. Om nog maar te zwijgen over alle aanvullende intrinsieke functionaliteit en flexibiliteitsfuncties die er zijn voor markers zoals geografische berekeningen, transformaties, click/highlight/select handlers en aan en uit.

enter image description here

Ik haat het om te zijn opdringerig , maar het zou nuttig zijn als u iets als GeoServer of MapServer op de achterkant zou gebruiken. U kunt een WFS-strategie instellen die werkt op uw intervaltimer van 5 - 30 seconden (of wat dan ook) en deze automatisch toestaan ​​de functies op te halen en weer te geven. In het geval dat je je afvraagt, doet het dit al in ajax-vorm. U hoeft dus niet de code te schrijven om de database te doorzoeken, parseren, converteren, enzovoort ... op 300 objecten op uw kaart. Openlayers zullen de nieuwste WFS-gegevens op uw Geoserver weergeven die naar PostGIS verwijzen. Je zou jezelf een hoop tijd en moeite besparen om dat wiel opnieuw uit te vinden. OpenLayers WFS-protocol kan worden ingesteld om te zoeken op basis van uw kijkvenster op een tijdelijke filter .

Hoewel functies niet goed presteren als er veel van zijn. 300 zou het kunnen duwen. Als u ziet dat de prestaties een probleem vormen, kunt u eenvoudig overschakelen naar het gebruik van WMS (alleen als u Geoserver of Mapserver hebt). U kunt ook een clusterstrategie gebruiken om vn noodzakelijke functies op je kaart.

7
toegevoegd
Bedankt voor uw uiterst informatieve en constructieve opmerkingen.
toegevoegd de auteur Brooklynn, de bron