Leistungsunterschied zwischen openlayers, decarta und google maps

8

Wir haben kürzlich unser Kartierungssystem von Google map auf deCarta und dann auf OpenLayers umgestellt. Wir haben festgestellt, dass OpenLayers und deCarta deutlich langsamer als Google Maps sind, wenn viele Elemente (mehrere tausend) zur Karte hinzugefügt werden (Pins mit Blasen beim Klicken). Google hat den Marker Manager, der es schneller zu machen scheint, aber was ich nicht herausfinden kann ist, wie dies die Speicherauslastung oder was auch immer reduziert, um es so viel besser zu machen. Es macht mich verrückt, weil wir dasselbe mit OL und deCarta machen wie mit Google und die anderen sind so langsam. Hat jemand Erfahrung im Umgang mit diesen Systemen?

Ich weiß, dass Google der gewaltige Riese der Kartentechnologie ist und deshalb enorme Summen in das System investiert hat. Daher ist es nicht überraschend, dass es schneller ist. Ich will nur WIE, wenn überhaupt möglich wissen.

Danke!

    
Andrew Christensen 04.03.2011, 14:58
quelle

5 Antworten

1

Alle Marker / Geoemtrys, die Sie über die OL-API in die Karte eingefügt haben, müssen in den Browser heruntergeladen und dann im Speicher des Browsers gerendert werden.

Wenn Sie viele Geometrien auf der Karte rendern, können Sie mit diesen Geometrien eine zusätzliche Bildschicht erstellen. Sie können dies tun, indem Sie ein WMS wie Geoserver verwenden. Geoserver spielt sehr gut mit OpenLayers und ist ein ziemlich schnelles WMS. So können Sie der Öffentlichkeit eine Hintergrundebene wie OSM oder GoogleMaps mit Layern aus Ihrem eigenen WMS kombinieren.

Dieser Ansatz funktioniert möglicherweise nicht für anklickbare Markierungen, verbessert jedoch die Geschwindigkeit, wenn Sie auf der Karte bemalte Geometrien wie Polygone usw. anzeigen.

Grüße, Steve

    
alfonx 04.03.2011 15:06
quelle
1

Ich nehme an, Sie verwenden eine der Klassen in OpenLayers.Strategy, wie Filter oder Cluster, um die Anzahl der tatsächlich angezeigten Marker zu reduzieren? Ich habe Google Maps nicht verwendet, aber es klingt, als ob markierter Manager das Gleiche macht. Letztlich sind beide Bibliotheken durch die gleichen Browsereinschränkungen eingeschränkt, wenn es um das Rendern einer großen Anzahl von Dom-Objekten geht.

    
John Powell aka Barça 12.03.2011 12:50
quelle
1

Der Hauptgrund dafür, dass Google Maps bei der Anzeige dieser vielen Marken bessere Ergebnisse erzielt, ist die Verwendung von HTML5-Canvas zum Rendern der Marken anstelle von ein Bildknoten für jeden Marker. Wenn der Browser die Karte beim Verschieben oder Zoomen neu malen muss, muss er alle Elemente im Ebenencontainer neu zeichnen. Weniger Elemente, bessere Leistung. OpenLayers hat einige Unterstützung für Canvas, aber mir sind keine Marker-Renderer in Canvas bekannt. Sie müssen auch selbst Klicks auf Marker erkennen, da Sie nicht länger einen Knoten-PR-Marker zum Anklicken haben.

Wo ich arbeite, erzeugen wir eine Image-Server-Seite und verwenden eine Old-School-Image-Map, um Bereiche des Bildes anklickbar zu machen. Es ist eine Lösung, die wir lange vor der Existenz von Canvas entwickelt haben. Daher würde ich es nicht empfehlen, aber es funktioniert auch in älteren Browsern. Wenn die Marker ziemlich statisch sind, würde ich lieber ein WMS verwenden, wie es andere vorgeschlagen haben, oder es mit einem Canvas selbst implementieren.

Vorsicht, die Canvas-Spezifikation ist immer noch ein funktionierender Entwurf und in älteren Browsern nicht verfügbar: Ссылка

    
gregers 01.06.2011 19:03
quelle
0

Google maps und Open Layers sind nur JS-Framework für den Browser-Client. Das sollte keinen großen Unterschied machen. Ich denke, es ist Google Maps Server infractStructure, die ein bisschen effektiver ist. Auch Marker Manager ist keine sehr gute Software (ist es keine Open-Source-Enthusiasten-Lösung?), Obwohl es JS- und Client-Seite ist, aber ich habe meinen Cluster-Manager mit einer Space-Filling-Kurve geplagt und es funktioniert fair gut. Ich wette, es ist besser als der Marker Manager, weil es auch andere Cluster-Lösungen im Web gibt und für mich sind sie besser.

    
Bytemain 12.03.2011 16:42
quelle
0

Ich habe das gleiche Problem mit deCarta, der Browser geht langsamer mit 800 approx pins Elemente (mit Blase auf Klick), fragte ich Krishna Vanka (wer arbeitet nicht mehr bei deCarta) darüber, aber ich bekomme keine Lösung, so bauen wir einen neuen Filter durch Zoom-Parameter und koordiniert Malerei Elemente und Caching Offscreen-Elemente, so dass wir über 2000 Pins im Gedächtnis zu bekommen, natürlich ist nicht der beste Weg, aber es funktioniert.

Das Problem in unserem System (GPS WebApp) mit Geometrien und Pins, die von Benutzern gezogen werden, so dass zusätzliche Bildebenen nicht möglich sind.

    
nerdcoder 17.10.2011 16:17
quelle