Zdravím,
mám problém so zobrazením väčšieho množstva markerov na mape na stránke. Je tam použité Google Maps API v2 (ale ani v3 sa na testovacej stránke pri riešení tohto problému neosvedčila).
Problém vyzerá tak, že je tam cca okolo 60 markerov, ktorých súradnice vytvára funkcia z prijatej poštovej adresy, ale tie sa nie vždy zobrazia všetky. Pri jednom načítaní stránky sa ich zobrazí 10, inokedy 20, niekedy všetky, niekedy len 5,...
var map = null;
var map2 = null;
var geocoder = null;
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map2 = new GMap2(document.getElementById("map2"));
map2.addControl(new GSmallMapControl());
geocoder = new GClientGeocoder();
}
showAddress("adresa", "odkaz pre infowindow">...</a>"); (tento riadok cca x60)
}
function showAddress(address, infotext) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
} else {
map.setCenter(point, 7);
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function()
{
marker.openInfoWindowHtml(infotext);
});
map.addOverlay(marker);
}
}
);
}
}
map2 si v tomto prípade nevšímajte, tam potom ešte nasleduje ďalšia funkcia pre zobrazenie adries pre druhú mapu, ale tej sa problém netýka, preto to neuvádzam.
Fórum › JavaScript, AJAX, jQuery
Google Maps nezvladaju niekolko desiatok markerov
To může být lecčím, zkoušel bych postupně debuggovat.. Na Google Helpu mají konstrukci:
if (!point) {
alert(address + " not found");
... nebo si vymysli něco v dalších krocích.
A jinak teď mě napadá, že geocoder je aplikace asynchronní, možná že se tam jednotlivé markery mlátí a je to třeba nějak obejít.
Zde je to řešeno timeoutem:
[url]http://stackoverflow.com/questions/408444/google-maps-api-gclientgeocoder-inconsistency-using-getlatlng-method
[/url]
Kdyby nic nepomohlo, hoď sem link :-)
Tú koštrukciu som mal aj ja, len som ju potom vyhodil, pretože niekedy mi vypísalo ten alert bezdôvodne.
Vďaka za odkaz, skúšal som sa potom rôzne hrať s timeoutami a vkladať ich ako do tela funkcie showAddress, tak aj do volania tejto funkcie, ale ani jedno nepomohlo. Skúsil som aj funkciu usleep v tele showAddress a tiež to nemalo žiaden účinok.
Skúsil som aj geocoder = new GClientGeocoder(); preniesť z initalize do showAddress, na jej začiatok, ale mapa vypadla uplne. Nefungovalo to.
Popravde ma Google Maps už dosť serú. :-) Ale bohužial sa ich zbaviť neviem.
Edit: Skúsil som tam dať aj slučku
var icount = 0;
do {
icount++;
} while(icount <= 100)
ale žiaden účinok to nemalo.
Používáš MarkerManager? Kdysi jsem taky něco s Google Maps API dělal a toto Google doporučoval pro efektivní práci s mnoha markery...
Dakujem vsetkym za pomoc,
nakoniec som to ale vyriesil trochu inak. Jednoducho som nechal geocoder prelozit vsetky adresy na latitude a longtitude a zadaval mape uz len tieto suradnice. Tym padom z kodu vypadol geocoder a problem bol okamzite vyrieseny.
Zdrojovy kod sem davat nebudem, pretoze nie je tazke si ho napisat. Ako urobit na mape marker pomocou latitude a longtitude sa da najst v dokumentacii Google Maps API, taktiez je tam aj postup ako cez URL zavolat geocoder a vytiahnut z neho vsetky potrebne udaje ci uz formou json alebo XML. Potom uz len staci pouzit regularne vyrazy a potrebne informacie si vytiahnut.
Ten som skusal, ale bud nefungoval (ten na ktory sa odkazovala dokumentacia GM API), alebo som ho nevedel rozbehnut. Kazdopadne firebug ukazoval na problem s argumentom v niektorej z funkcii vo vnutri markermanageru, takze som to dalej neriesil.Jasper napsal:
Používáš MarkerManager? Kdysi jsem taky něco s Google Maps API dělal a toto Google doporučoval pro efektivní práci s mnoha markery...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Google maps — založil plasmo
Google maps vzdialenosť — založil Anonym
Google maps API — založil paloS_1
Google Maps bez API — založil Neregistrovaný
Google Maps - vlastní layer? — založil CZechBoY
Moderátoři diskuze