Unsere Web-App enthält einfache Zuordnungsfunktionen (derzeit nur Markierungen und KML-Overlays auf einer eingebetteten Google Map). Das funktioniert ziemlich gut; Die einzige wirkliche Einschränkung sind KML-Overlays, die über die Größen- und Komplexitätsbeschränkungen von Google für KML hinausgehen .
Wir überlegen, einen eigenen Server (z. B. GeoServer oder ArcGIS Server) einzurichten. Dies scheint jedoch ein großer Schritt zu sein, um beispielsweise 15 MB KML bereitzustellen, wenn das Google-Limit bei 10 MB liegt.
Ich benötige eine Sicherheitsüberprüfung: Gibt es einen Mittelweg zwischen Googles kostenloser und einfacher API für KML-Overlays und dem Einrichten meines eigenen Kachelservers?
google-maps
kml
Herb Caudill
quelle
quelle
Antworten:
Da Sie bereits in die Entwicklung von Google Maps investiert haben, empfehle ich dringend, alle Daten in Google Fusion Tables zu übertragen, die dann auf ähnliche Weise wie KML mit einer unglaublichen Leistung auf die Karte geparst werden können (siehe WNYC Fusion Tables-App ). Betrachten Sie es als Upgrade auf KML, ohne das Front-End drastisch ändern zu müssen.
quelle
Sie können Ihre KML-Datei in mehrere KML-Dateien aufteilen, wobei eine übergeordnete KML-Datei auf die kleineren kmls verweist. Zumindest wird dies Ihre Dateigröße auf ein respektables Maß reduzieren und es Ihnen ermöglichen, auf viel größere Datensätze als KML zu verweisen.
Ehrlich gesagt ist KML nur für kleine Datensätze mit wenigen Funktionen und zugehörigen Attributen geeignet. Ich würde es nicht als Dateidatenquelle verwenden. Wenn diese Dateien größer werden, würde ich mir einen anderen Datentyp ansehen oder definitiv die GeoServer / MapServer-Route für verteilte Datensätze durchgehen.
quelle
Wenn Sie nicht zu viel Zeit in Ihre Google Maps-API investiert haben, können Sie zu OpenLayers wechseln, das über einen clientseitigen KML-Parser verfügt, der Ihre eigenen KML-Dateien lesen kann - siehe Beispiel unten:
http://openlayers.org/dev/examples/kml-layer.html
Bei einer 15-MB-Datei würde dies den Browser jedoch wahrscheinlich zum Stillstand bringen. Wahrscheinlich ist es auch auf den Google-Servern ziemlich langsam, wenn Sie sich der Dateigrößenbeschränkung nähern.
Besteht wirklich ein Bedarf an 15 MB Detailtiefe oder können Sie die KML-Datei vereinfachen, ohne zu viele Informationen zu verlieren?
Müssen Sie clientseitig auf den Vektor / die Geometrie zugreifen? Könnten diese Daten als Bilder geliefert werden?
Wenn beides nicht möglich ist, müssen Sie sich eine Art von Software ansehen, die Karten bereitstellt. Zusammen mit GeoServer von ArcGIS Server könnten Sie MapServer in Betracht ziehen , um das KML oder als WFS bereitzustellen. Der Vorteil der Verwendung eines Kartenservers besteht darin, dass die Anforderungen nur die Daten in der Karte zurückgeben, wodurch der Netzwerkverkehr verringert und die Ladezeiten verkürzt werden.
quelle
Wenn Sie Version 3 verwenden, können Sie alle Attributinformationen mit Ausnahme eines eindeutigen Bezeichners entfernen und die Informationen über Ajax-Aufrufe an einen Webdienst anfordern, wenn ein Benutzer auf ein Feature klickt. Wenn Sie Punkte im Wert von über 10 MB haben, ist es wahrscheinlich eine gute Idee, eine Art Clustering durchzuführen, anstatt alle diese Punkte gleichzeitig anzuzeigen. Sie können Ihre Bodenüberlagerungen auch in separate KML-Dateien aufteilen.
quelle
Haben Sie Google Fusion Tables ausprobiert? http://www.google.com/fusiontables/public/tour/index.html
Sie können bis zu 100 MB Daten kostenlos laden.
quelle
MapLarge hat eine interessante Lösung: Sie können Ihre Daten auf ihren Servern replizieren und dann mithilfe ihrer proprietären Software im Handumdrehen Kacheln erstellen . Sie bieten Javascript-APIs an, die diese dann auf Basiskarten von Google Maps, OpenLayers usw. überlagern können.
Schauen Sie sich einige ihrer Beispiele an - die Geschwindigkeit ist beeindruckend:
Es ist nicht kostenlos, aber es könnte eine gute Option für jemanden sein, der nicht die Mühe und die Kosten wollte, einen separaten Server aufzubauen, um diese Ebenen zu generieren.
quelle