Mam globalną bazę danych obiektów (punkty na mapie), które chciałbym pokazać na mapie ulotek. Zamiast ładowania całej bazy danych (po prostu zbyt dużej) naraz i tworzenia obiektów w grupie LeafletGroup, czy istnieje skuteczniejszy sposób sprawdzania danych zapytania, na przykład przy ładowaniu każdego kafelka mapy, czy też szukam rozwiązania niestandardowego? dla tego?Efektywny sposób uzyskiwania dostępu do dużych zestawów danych do wyświetlenia na ulotce
Odpowiedz
Można oglądać „moveend” zdarzenie na mapie z map.on('moveend',loadstuff)
, wykonać połączenie ajax wewnątrz loadstuff()
porwać znaczniki wewnątrz bieżącego map.getBounds()
, a następnie dodaj/usuń znaczniki (Przypuszczam masz jakiś globalny identyfikator dla każdego z nich), niezależnie od tego, czy są one obecne, czy też nie.
To powinno być oznaczone jako odpowiedź, jest to właściwy sposób, aby to zrobić. – Rudi
Dzięki za wskazanie tego. Nie jestem jeszcze bardzo wyrafinowanym użytkownikiem SO. – CuNimb
@snkashis - czy mógłbyś podać trochę więcej szczegółów, jak to zrobić? Dokładnie to próbuję zrobić, ale moje umiejętności nie są tak wspaniałe! –
Istnieje standardowy i skuteczny sposób robienia tego, co snkashis powiedział. Utwórz kafelkową usługę geoJSON i użyj wtyczki leaflet-tilelayer-geojson.
Następnie cały kod będzie trzeba po stronie przeglądarki jest (od strony GitHub):
var geojsonURL = 'http://polymaps.appspot.com/state/{z}/{x}/{y}.json';
var geojsonTileLayer = new L.TileLayer.GeoJSON(geojsonURL, {
clipTiles: true,
unique: function (feature) {
return feature.id;
}
}, {
style: style,
onEachFeature: function (feature, layer) {
if (feature.properties) {
var popupString = '<div class="popup">';
for (var k in feature.properties) {
var v = feature.properties[k];
popupString += k + ': ' + v + '<br />';
}
popupString += '</div>';
layer.bindPopup(popupString);
}
if (!(layer instanceof L.Point)) {
layer.on('mouseover', function() {
layer.setStyle(hoverStyle);
});
layer.on('mouseout', function() {
layer.setStyle(style);
});
}
}
}
);
map.addLayer(geojsonTileLayer);
- 1. Zestaw Highcharts dużych zestawów danych
- 2. Dopasowywanie przestrzenne dużych zestawów danych
- 3. SQLite dla dużych zestawów danych?
- 4. Optymalizacja autouzupełniania dla dużych zestawów danych
- 5. sposób uzyskiwania dostępu do IFA z przeglądarki na iOS6
- 6. Ładowanie dużych zestawów danych za pomocą AngularJS
- 7. Przetwarzanie dużych zestawów danych przy użyciu LINQ
- 8. Konfiguracja IAM do uzyskiwania dostępu do jgit na S3
- 9. Najlepsze praktyki uzyskiwania dostępu do danych bez schematów?
- 10. Wygodny sposób uzyskiwania dostępu do etykiety zmiennych po zaimportowaniu danych Staty za pomocą przystawki
- 11. Sposób uzyskiwania dostępu do plików zasobów w pythonie
- 12. sposób uzyskiwania dostępu do strony wzorcowej ze strony zawartości
- 13. uzyskiwania dostępu do właściwości szkieletu Parent View
- 14. sposób uzyskiwania dostępu do podstawowej domyślnej kolejki współbieżnej kolekcji blokującej
- 15. Najlepszy sposób uzyskiwania dostępu do obiektów COM z C#
- 16. Symfony: błąd podczas uzyskiwania dostępu do tablicy
- 17. Dołączanie do danych wyjściowych procesów do wyświetlenia
- 18. Importowanie i dostępu do dużych plików danych w błyszczące
- 19. Najbardziej efektywny sposób wektorów podzbiorczych
- 20. Przekierowano do captcha podczas uzyskiwania dostępu do google translate
- 21. HttpsURLconnection do publikowania i uzyskiwania dostępu do systemu Android
- 22. Używanie WebDAV do uzyskiwania dostępu do skrzynki pocztowej Exchange 2003
- 23. Jaki jest najczystszy sposób dołączania i uzyskiwania dostępu do danych binarnych w VC++ Express?
- 24. Najbardziej efektywny sposób zapisu danych do pliku csv z Julią
- 25. Biblioteka Objective-C do uzyskiwania dostępu do SVN
- 26. Najlepszy sposób uzyskiwania dostępu do bazy danych SQL Server przy użyciu C# .Net
- 27. Najbardziej efektywny sposób odczytywania dużych plików w kawałkach
- 28. Polecenie CMD systemu Windows do uzyskiwania dostępu do usb?
- 29. Ember dławi się po napotkaniu dużych zestawów danych
- 30. Komenda PostgreSql do wyświetlenia danych tabeli
Jak służyć mapę? Spodziewam się, że serwer ma metodę, którą można sprawdzić za pomocą ramki ograniczającej. Lub w zależności od ilości obiektów, możesz prawdopodobnie użyć znaczników. Ich przykład ma [mapę wyświetlającą 50000 pozycji] (http://leaflet.github.com/Leaflet.markercluster/example/marker-clustering-realworld.50000.html). – flup
Nie chcę używać znaczników, ponieważ chcę wyświetlić każdy znacznik, który jest widoczny zamiast agregowania. Próbuję zdecydować, w jaki sposób powinienem obsługiwać moją mapę. Ponieważ jest to przesuwane lub powiększane, prawdopodobnie nie ma sensu wysyłać zapytania do serwera za każdym razem, zgodnie z nowym obwiednią (która może częściowo pokrywać się ze starym). Mogę sobie wyobrazić kilka sposobów, aby to zrobić, ale zanim odkryję nowe koło, chciałbym się upewnić, że nie ma już dobrego rozwiązania. – CuNimb
Cóż, w pewnym momencie, kiedy przybliżasz się do całego świata, to " d oznacza pokazywanie każdego pojedynczego markera. Zatem tworzenie klastrów ma sens. Czy też nie pokażecie żadnych znaczników poniżej pewnego minimalnego poziomu powiększenia? Ile masz markerów? – flup