Přihlášení:

Registrace | Přihlášení | Seznam

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ů

Skok na začátek Skok na novější Skok na starší Skok na konec
  • jiri.cisar jiri.cisar - 06.07.10 09:42:40

    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.

     

    • jelc jelc - 07.07.10 17:40:16

      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

       

  • simonik simonik - 28.06.10 11:27:37

    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.

     

    • jelc jelc - 28.06.10 13:54:40

      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.

       

      • simonik simonik - 28.06.10 14:01:56

        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');

         

        • jelc jelc - 28.06.10 16:42:14

          RE: Událost při...
          aha, zkuste jeste "moveEnd"

           

          • simonik simonik - 29.06.10 08:30:58

            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?

             

            • jelc jelc - 29.06.10 09:14:29

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

               

              • simonik simonik - 29.06.10 22:28:17

                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.

                 

  • simonik simonik - 14.06.10 14:07:56

    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

     

    • jelc jelc - 16.06.10 13:12:12

      RE: getBoudingBoxSe...
      co presne metoda getBoudingBoxSetting vraci (obsah promene result)

      jinak jsem si vsiml ze tohle je opravdu divna konstrukce:
         eval('pom='+txt);
         eval('p.'+nazev+'=pom.tr');
      k atributum objektu muzete pristupovat jednoduse takto:
      objekt[vlastnost] = hodnota

       

      • simonik simonik - 16.06.10 20:44:05

        RE:...
        Ano, už jsem to zjistil a používám. Tady jsem to ještě neopravil. Ale to první eval (eval('pom='+txt);
        ) asi musím použít, že? Protože "txt" je typu string (JSON).

         

        • jelc jelc - 16.06.10 21:04:35

          RE:...
          ano, tam je v soucasne situaci je eval v poradku, nemusite ale pred tim definovat:
          pom={};
          muzete pouzit rovnou:
           eval('var pom='+txt);

           

    • jelc jelc - 16.06.10 13:14:04

      RE: getBoudingBoxSe...
      mimochodem pokud ve vrstve nejsou zadne znacky, nema se ta metoda o co oprit pri vypoctu

       

      • simonik simonik - 16.06.10 20:46:00

        RE:...
        Aha, děkuji. Nevšimnul jsem si, že je to pouze pro značky. Já mám vlastně čáry (vecSrc.lineTo). Zkusím použít: var rect = mapa.utilsGetRectangle(field);

         

  • simonik simonik - 07.06.10 13:55:45

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

     

    • jelc jelc - 09.06.10 00:04:16

      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

       

      • simonik simonik - 09.06.10 11:35:43

        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.

         

        • jelc jelc - 09.06.10 16:22:29

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

           

          • simonik simonik - 14.06.10 14:05:00

            RE: Souřadnice....
            Děkuji. Funguje to.

             

Skok na začátek Skok na novější Skok na starší Skok na konec

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