Google Maps nezvladaju niekolko desiatok markerov – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Google Maps nezvladaju niekolko desiatok markerov – JavaScript, AJAX, jQuery – Fórum – Programujte.comGoogle Maps nezvladaju niekolko desiatok markerov – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Smokie0
Expert
26. 7. 2010   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 88.212.36.–
midin0
Věrný člen
26. 7. 2010   #2
-
0
-

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 :-)

Nahlásit jako SPAM
IP: 85.70.229.–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
Smokie0
Expert
26. 7. 2010   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 88.212.36.–
midin0
Věrný člen
26. 7. 2010   #4
-
0
-

Postni link s mapou.

Nahlásit jako SPAM
IP: 90.177.64.–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
Jasper0
Věrný člen
26. 7. 2010   #5
-
0
-

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...

Nahlásit jako SPAM
IP: 217.197.36.–
midin0
Věrný člen
27. 7. 2010   #6
-
0
-

60 ale podle mne zdaleka není tak kritická suma.

Nahlásit jako SPAM
IP: 85.70.229.–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
Smokie0
Expert
29. 7. 2010   #7
-
0
-

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.

Nahlásit jako SPAM
IP: 88.212.36.–
Smokie0
Expert
29. 7. 2010   #8
-
0
-

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...

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.

Nahlásit jako SPAM
IP: 88.212.36.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

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ý

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý