PŘÍSPĚVKY V DISKUZI
Mapy API
Pište nám vaše připomínky.
aktualizovat
výpis podle času
strom příspěvků
-
Ajax vizitky
Dobrý den, mám na mapě cca 400 bodů a ke každé vizitku (okno s údaji). Musím je však po vzoru ukázek vypisovat do kódu nebo jsou nějak dynamicky načítat třeba ajaxem? Pokud to jde, mohl bych poprosit o nějakou ukázku? Děkuji.-
RE: Ajax vizitky
Ano to by slo, API (http://api.mapy.cz/) sice nema jednoduchou pomucku pro vas pozadavek (jediny zpusob ktery ma je pro specifickou komunikaci se servery ktere vydavaji POI), ale ukazka http://api.mapy.cz/static?page=manual#a5 pujde upravit.
1) v ukazce se definuje akce po kliku na znacku: mark1.setAction(window,markClick);
metotu markClick prepisete tak aby si o data rikala dotazem na server
2) po zpracovani odpovedi serevru (tedy pote co server odpovi a ziskate tak data podobna tem v ukazce) zavolate metodu, ktera provede druhou cast byvale metody markClick:
var crd = new SZN.Visual.BaseCard(mark.pos.x,mark.pos.y,cardData,null,null,null)
apa.addCard(crd);
kde cardData budou data ziskana ze serveru.
Ke komunikaci klient-server muzete pouzit SZN.HTTPRequest z khihovny JAK (http://jak.seznam.cz/example/simple/), ktera je soucasti API
-
-
Událost při pohybu mapou
Potřebuji si pamatovat střed mapy (getCenter). Zkoušel jsem to v události myši, ale fungovalo to nespolehlivě (hodnoty se měnily prapodivně). V jaké události by to bylo vhodné sledovat?
Děkuji.-
RE: Událost při...
Omlouvam se, ale asi uplne presne nerozumim otazce, nicmene po udalosti "mapUpdate" nebo "onMapUpdate" by mely byt hodnoty vracene metodou getCenter korektni; behem pohybu s mapou se stred neprepocitava neustale.-
RE: Událost při...
V události onMapUpdate se mi ale alert při pouhém přesunování mapy pomocí myši nezobrazí. Pouze při zůmování.
function writeZoom() {
var trg = SZN.gEl('actZoom');
zm = mapa.zoomGet();
trg.innerHTML = zm;
alert ("toto se při pohybu nezobrazi");
}
mapa.apiHandler.addApiListener(window,'onMapUpdate','writeZoom');-
-
RE: Událost při...
V této události lze střed mapy získat. Ale tato událost nereaguje na Zoom mapy. Já zapínám a vypínám vrstvu. Po zapnutí vrstvy, nasledné změně zoomu, vypnutí vrstvy a jejím opětovném zapnutí, dojde k posunutí mapy.V události onMapUpdate, kde získávám hodnotu zoomu, ale nejde získat střed mapy. Dělá to ale poue když měním zoom pomocí kolečka myši. Když ho měním pomocí ovládacího prvku pro zoom, tak tento jev nenastává.Šlo by to nějak vyřešit?-
RE: Událost při...
Když měníte stupeň přiblížení pomocí kolečka myši (nebo klikáním), tak se za pevný bod považuje nikoli střed, ale místo, kde k události došlo, proto se mění střed mapy. (například chci nazoomovat na nějaká místo, ale nechci aby se při přibližování k povrchu země dostalo mimo průhled, ani si ho nechci ručně nastavit na střed mapy aby nemizelo).
Změnit toto chování není triviální a v podstatě v sobě zahrnuje předefinování části funkcionality map.
Pokud tomu dobře rozumím, tak by jste chtěl po každé změně zoomu vrátit mapu na původní střed před začátkem změn (bude se to divně cukat)?-
RE: Událost při...
Tak to mě nenapadlo, že je to skrz to. Já vykresluji v podstatě gps trasu a při jejím podrobném zkoumání zůmuji kolečkem a zapínám ji a vypínám (enable a disable layer)abych viděl, zda vede po nějaké polní cestičce atd, protože ta cestička je překryta mojí vykreslenou trasou.Tak budu prostě zůmovat ovládácím prvkem. V podstatě je to jenom o zvyku. Díky za osvětlení filozofie ovládání mapy.
-
-
-
-
-
-
-
getBoudingBoxSetting
Nemůžu stále přijít, proč mi nefunguje getBoudingBoxSetting.
Mohl, byste se, prosím, na na to podívat?
// --------------------------- AJAX ----------------------
function jsonReq() {
var jrq = new SZN.HTTPRequest();
jrq.setMethod("get");
jrq.setFormat("txt");
jrq.setMode("async");
var s="ajax_trasy.php?trasa="+ve.name+".trs";
jrq.send(s, window, "_jsonResp");
}
/**
* callback metoda
*/
var vizitky={};
function _jsonResp(txt, status) {
if (status == 200) {
var nazev =ve.value;
var existuje = mapa.getLayer(nazev);
if (!existuje)
{
p={};
//eval('p.'+nazev+'='+txt);
trasa={};
pom={};
eval('pom='+txt);
eval('p.'+nazev+'=pom.tr');
p[nazev]=pom.tr;
if(pom.hasOwnProperty("viz")){
vizitky[nazev]=pom.viz;
}
napln();
}
if (ve.checked)
{
mapa.enableLayer(nazev);
var l=[];
l.push(nazev);
var result = mapa.getBoudingBoxSetting(l,true,false); // nefunguje
var pocitadlo=1;
var pom=[];
var obj1=vizitky.hasOwnProperty(nazev);
if (obj1){
for (var i=0; i<vizitky[nazev].length;i++)
{
var znacka = mapa.makeMark('company',vizitky[nazev][i][2],pocitadlo,nazev+"*"+i);
pom.push(znacka);
var pp = mapa.wgsToPP(vizitky[nazev][i][0],vizitky[nazev][i][1]);
znacka.setAction(window,markClick);
mapa.addMark(pp.x,pp.y,znacka);
pocitadlo++;
}
}
znacky[nazev]=pom;
}
else
{
mapa.disableLayer(nazev);
for (var i in znacky[nazev]){
mapa.removeMark(znacky[nazev][i]);
}
}
}
}
Funkční kod je na :http://www.kolo-bezky.cz/akce/simonik/mapy/kresli_tr9v.php -
Souřadnice při pohybu mapou
Chtěl jsem detekovat, jestli došlo ke zmáčknutí a uvolnění myši na jednom místě a podle toho buď kreslit anebo ne.
Souřadnice jsou ale stejné, i když myš uvolním na jiném místě. Jde to nějak řešit? V mapy.beta to obdobně funguje.
Děkuji.
function dole(e, elm)
{
posl_pozice=lastPos;
}
function hore(e, elm)
{
if (lastPos.x==posl_pozice.x && lastPos.y==posl_pozice.y)
{
semafor=true;
}
else
{
semafor=false;
}
}
SZN.Events.addListener(mapa.port.map.mapElement, 'mousedown', window, 'dole', false);
SZN.Events.addListener(mapa.port.map.mapElement, 'mouseup', window, 'hore', false);-
RE: Souřadnice při...
Dobry den, zda se mi ze ta ukazka je nekompletni, protoze z toho co jste poslal je patrne pouze ze promena do promene posl_pozice prirazujete objekt lastPos, je jasne, ze jejich vlastnosti pak budou identicke-
RE: Souřadnice...
LastPos se čte pomocí následující funkce:
function readPos(x1,y1,x2,y2,ppx,ppy){
lastPos = {
x : ppx,
y : ppy
}
}
function startReading (){
mapa.addMouseRead(window,'readPos');
mapa.startMouseRead();
}
mapa.apiHandler.addApiListener(window,'mapInited','startReading');
Jednou čtu pozici, když zmáčknu tlačítko myši a podruhé když ho uvolním. Jestli jsou různé, tak netahám mapu.-
RE: Souřadnice....
Zda se mi ze ve funkci "dole" prirazujete do "posl_pozice" objekt "lastPos", kteremu pri pohybu mysi menite vlastnosti x a y. To znamena (protoze v javascriptu se objekty predavaji referenci), ze plati po celou dobu posl_pozice === lastPos, takze i jejich vlastnosti budou identicke.
Mozna by pro zjistovani zda k udalosti mouseup a mousedown doslo na stejnem miste stacilo cist atributy udalosti (clientX a clientY, nemylim-li se) a porovnavat je. Potom nebudete potrebovat funkci readPos()
-
-
-
Musíte se přihlásit
Pokud chcete do diskuze psát, musíte se přihlásit.
Registrace uživatele - Přihlásit se


