Mam pewne dane, które są zbierane przez urządzenie GPS zainstalowane w samochodzie. Więc dane, które mam, w zasadzie leżą na/wokół ulicy/drogi. Każda współrzędna ma jakąś wartość. Format danych jest podobny do tego.100k lub więcej znaczników na mapach google bez klastrowania
lat | long | value
---------------------------------
12.979155 | 77.644925 | 6
---------------------------------
12.97916833 | 77.64493667 | 2
---------------------------------
12.97917167 | 77.64492167 | 8
Moje zadanie polega na wykreśleniu tych długich na mapie google. Wydaje się dość łatwym zadaniem, gdy mówimy o umieszczeniu 10, 100 lub 1000 markerów. Ale jak już wspomniałem powyżej, zbieramy dane za pomocą napędu, a odległość między dwoma długimi lub dwoma punktami będzie w kilku krokach (na przykład 2-3 stopy).
Tak więc pod koniec badania będę miał 90-100 tysięcy lat dla małej części miasta i może wzrosnąć nawet o milion dla całego miasta.
Próbowałem dodać znacznik 9-10k i jego woking dobrze, ale kiedy próbuję załadować 40k, 50k, 60k robi to moją bardzo wolną przeglądarkę i jest to komunikat o błędzie kończę.
Uncaught RangeError: Maximum call stack size exceeded main.js:1
I zostały googling dużo o tym, ale ja nie jestem w stanie znaleźć żadnych przykład lub samouczek, który doprowadzi mnie do umieszczenia 1 mln znacznik za pomocą technologii Znam trochę. (Co jest asp.net). Znaleziono ten przykład http://www.scribblemaps.com/markerComplex/ Jonathana Wagnera, ale nie jestem w stanie go zrozumieć i wdrożyć w istniejącym kodzie, który wygląda tak.
// Pobieranie z serwera MSSQL z opóźnieniem.
function PushValues(ParameterID) {
a = ParameterID.slice(5);
var CityID = $('#ddlCity').val().split('|');
$.ajax({
type: "POST",
url: "index.aspx/PushLatLong",
data: "{CityID:'" + CityID[0] + "',OperatorID:'" + $('#ddlOperator').val() + "',ParameterID:'" + ParameterID.slice(4) + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
cache: false,
success: function (response) {
GooglePlaces = response.d.split('#');
if (GooglePlaces != "Blank") {
HasValues = 1;
} else {
HasValues = 0;
}
},
Error: function (r) {
}
});
}
// Umieszcza wartości w mapie google.
function PlaceValues() {
var options = { zoom: 3, center: new google.maps.LatLng(37.09, -95.71), mapTypeId: google.maps.MapTypeId.ROADMAP };
var map = new google.maps.Map(document.getElementById('map'), options);
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < GooglePlaces.length; i = i + 2) {
ltlg = new google.maps.LatLng(GooglePlaces[i], GooglePlaces[i + 1]);
var marker = new google.maps.Marker({
position: ltlg,
map: map,
title: 'Place number',
icon: "img/GoogleIcons/" + legendfirstvalue[1]
});
bounds.extend(ltlg);
}
map.fitBounds(bounds)
$('#DivLoadImage').hide();
}
Jeszcze jedno chciałbym wspomnieć o to, że kolor markera zależą od wartości łac długości. Więc będę miał wiele kolorowych znaczników. Mogłem z łatwością spróbować pokazać znacznik, ale wtedy nie będę w stanie zobaczyć koloru znacznika, dopóki nie zoon się w tym obszarze. Więc nie ma sposobu, abym mógł używać clustring.
Jestem pewien, że w moim kodzie będzie miliony błędów. W razie potrzeby chcę zmienić moje podejście. Here to wersja demonstracyjna aplikacji.
http://coeindia.in/test/harry/index.html nie działa – Kiquenet
To był adres URL mojej starej strony pracodawców. Mogli dokonać pewnych zmian w katalogach. – Ravi