2016-07-30 13 views
2

Ich versuche, eine Map-basierte Web-App mit mapbox und leaflet.js zu erstellen.Schlechte Leaflet.js Leistung im Internet Explorer

Ich lade 300 Marker in eine FeatureLayer aus einer GeoJSON-Datei. Dies scheint in jedem Browser mit Ausnahme des Internet Explorer gut zu funktionieren, der bei jedem Laden oder Filtern von Markern mit featureLayer.setFilter etwa 10 Sekunden lang einfriert. Ich habe eine Demo dieser here hochgeladen.

Locking bei der IE-Performance-Analyse scheint der Schuldige der 'addDoubleTapListener' zu sein. Dies scheint ein bekanntes Problem zu sein (https://github.com/Leaflet/Leaflet/issues/4357), und die Lösungen schlagen vor, auf Merkblatt 0.7.5 zurückzurollen oder den Zweig 0.7.7.1 zu verwenden (mit einem Fix, der die Berührungserkennung zurücknimmt). Ich habe beides versucht und scheint auch keinen Einfluss auf das Problem zu haben. Ein Upgrade auf das Flugblatt 1.0.0-beta wird ebenfalls empfohlen, aber dies scheint nicht mit der aktuellen Mapbox kompatibel zu sein ...

Jede Hilfe bei der Überwindung dieses Problems wäre sehr willkommen.

+1

Ich habe ein paar tausend Marker in IE (9+) geladen und habe dieses Problem nicht bemerkt, aber ich benutze 'setFilter' nicht wirklich. Normalerweise füge ich Marker in Chunks über AJAX hinzu. Verbessert sich das überhaupt, wenn statt "L.geoJson (data)" mit 'geoJsonLayer.addData()' '? Kannst du auch bitte mit deinem Beispielcode eine Fiedel machen, damit wir testen und profilieren können? – nothingisnecessary

+0

Ich habe das gleiche Leistungsproblem im Edge. –

Antwort

1

Ok die Lösung, die ich fand, war, die folgenden Zeilen aus blättchen src.js 0.7.7.1 zu entfernen:

if (L.Browser.touch && (type === 'dblclick') && this.addDoubleTapListener) { 
    this.addDoubleTapListener(obj, handler, id); 
} 

IE jetzt lädt die Markierungen blitzschnell und alle Funktionen erscheinen noch zu arbeiten in alle Geräte, die ich ausprobiert habe. Dies ist keine ideale Lösung, wird aber als Lückenschlusslösung dienen, bis Mapbox Leaflet 1.0.0 unterstützt.

+0

interessant .. habe nicht auf einem Windows Touch-Gerät getestet, obwohl ich Broschüre mit iOS und Android-Geräten verwenden. was macht double tap überhaupt? hineinzoomen? nutzlos. Auf welcher Hardware hast du IE getestet und hat es Touch unterstützt? vielleicht habe ich es deshalb nicht gesehen, werde später versuchen, wenn ich ein windows touch-gerät sichern kann – nothingisnecessary

Verwandte Themen