A Yandex leképezi az api 2.1 átmenetet

Ebben a cikkben egy cikksorozatot szeretnék indítani a Yandex.Maps API-val való együttműködésről. A Yandex.Maps dokumentációja meglehetősen teljes, de az információk töredezettségének foka benne magas; amikor először fél liter nélkül belép a dokumentációba, nem tudja kitalálni, és egy probléma megoldására elkölthet egy sok időt tölt a dokumentációban és a keresőben való kereséssel. Ez a cikksorozat a Yandex.Maps API legfrissebb, 2.1-es verziójának használatának leggyakoribb eseteire vonatkozó gyakorlati megoldásokról szól.

Amikor egy webhelyet elhelyez a kapcsolattartási adatok között, gyakran be kell illeszteni egy térképet, amelyen meg lesz jelölve annak a szervezetnek a helye, amely számára a webhelyet fejlesztik. A legegyszerűbb esetekben ez lehet csak egy képernyőkép online térképekről (vagy nem online):

Betéthez interaktív térkép térképkészítő használható
https://tech.yandex.ru/maps/tools/constructor/ :

Ha fejlettebb térképhasználatra van szükségünk (saját címkék, térképek programozott mozgatása stb.), akkor ehhez a Yandex.Maps API-t kell használnunk: https://tech.yandex.ru/maps/jsapi/ . A térképek használatának példájaként ebben a cikkben egy térkép létrehozását tekintjük meg egyéni címke és buborék egyszerű hozzáadásával.

Először is kössük össze az API összetevőket:

Ha valamilyen nagy alkalmazást térképek segítségével fejlesztenek, akkor jobb egy bizonyos verzió API-komponenseit csatlakoztatni, hogy az API Yandex oldalon történő frissítésekor semmi sem törjön meg a termelésben:

A térképet valamilyen blokkban kell elhelyezni, például in div#map. Ezután a térképet ebben a blokkban kell létrehozni (miután a térkép és a DOM készenléti esemény elindult):

ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("térkép" , ( középen: [ 55.76 , 37.64 ] , zoom: 7 ) ) ; )

Itt jelezzük:

  1. blokk azonosító térkép, ahol térképet készítünk;
  2. központ— a térkép közepe, amely jelzi a szélességet és a hosszúságot;
  3. zoomolás— térkép léptéktényező.

Alapértelmezés szerint a Yandex.Maps sok felesleges elemet hoz létre, amelyekre a legtöbb esetben nincs szükség a webhelyeken. Alapvetően elegendő 2 feltételt alkalmazni a vezérlőelemekre és a térkép viselkedésére:

  1. a térképelemek közül csak a nagyítási csúszka van jelen;
  2. a térképet nem szabad az egérgörgéssel nagyítani.

Ezen követelmények teljesítése érdekében kiegészítjük a kódot:

ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("térkép" , ( középen: [ 55.76 , 37.64 ] , zoom: 13 , vezérlők: ) ) ; myMap.behaviors .disable ("scrollZoom") ; myMap. vezérlők .add ("zoomControl" , ( pozíció: ( fent: 15 , balra: 15 ) ) ; )

Itt letiltottunk scrollzoomés hozzáadott "zoom vezérlés" a bal felső sarokból helyezve el.

Most hozzá kell adnunk egy címkét a térképhez, a cikkhez letöltjük a képét a http://medialoot.com/item/free-vector-map-location-pins/ oldalról, és elhelyezzük a kódban az alábbiak szerint:

ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("térkép" , ( középen: [ 55.7652 , 37.63836 ] , zoom: 17 , vezérlők: ) ) ; myMap.behaviors .disable ("scrollZoom" ) ) vezérlők .add ("zoomControl" , ( pozíció: ( fent: 15 , balra: 15 ) ) ) ; var myPlacemark = new ymaps.Placemark ([ 55.7649 , 37.63836 ] , ( ) , ( iconLayout: "default,#imamage" : , iconImageSize: [ 40 , 51 ] , iconImageOffset: [ - 20 , - 47 ] ) ) ; myMap.geoObjects .add (myPlacemark) ; )

Itt deklarálunk egy változót myPlacemark, amelyben a markert írjuk, az első paraméterbe ymaps.Helyjelző adja meg a címke koordinátáit, és a harmadik paraméterben:

  1. jelezze be ikonElrendezés hogy egyéni címkekép kerül felhasználásra;
  2. iconImageHref- a kép elérési útja;
  3. iconImageSize- adja meg a kép méretét;
  4. iconImageOffset- a kép bal felső sarkától a kép azon pontjához való eltolódást jelezzük, amelyet a számunkra szükséges tárgyra mutatunk. Erre azért van szükség, hogy a térkép méretezésekor ne tévedjen el a címke pozíciója. Miért van az eltolás negatív értékekben feltüntetve - csak Isten ismeri az API létrehozóját.

És át myMap.geoObjects.add() jelölőt adjon a térképhez.

És most készítsünk egy léggömböt, amely akkor jelenik meg, ha a térkép címkéjére kattintunk, a lufi elrendezését és a tartalmát a http://designdeck.co.uk/a/1241 webhelyről vesszük

ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("térkép" , ( középen: [ 55.7652 , 37.63836 ] , zoom: 17 , vezérlők: ) ) ; myMap.behaviors .disable ("scrollZoom" ) ) vezérlők .add ("zoomControl" , ( pozíció: ( fent: 15 , balra: 15 ) ) ) ; var html = " " ; var myPlacemark = new ymaps.Placemark ([ 55.7649 , 37.63836 ] , ( balloonContent: html ) , ( iconLayout: "default#image" , iconImageHref: "http://site/files/APIYaMaps1/min_marker.png", iconImageSize: [ 40 , 51 ] , iconImageOffset: [ - 20 , - 47 ] , balloonLayout: "default#imageWithContent" , balloonContentSize: [ 289 , 151 ] , balloon:ImageHref "http://site/files/APIYaMaps1/min_popup.png", balloonImageOffset: [ - 144 , - 147 ] , balloonImageSize: [ 289 , 151 ] , balloonShadow: false ) ) ; myMap.geoObjects .add (myPlacemark) ; )

Itt vagyunk:

  1. ban ben ballonContent adja meg a tartalmat, amely a ballon kinyitásakor jelenik meg;
  2. ballonLayout- adja meg, hogy egy egyéni kép kerüljön felhasználásra a léggömb elrendezéseként;
  3. balloonContentSizeés balloonImageSize— a tartalom és a képek méretei;
  4. balloonImageHref- a kép elérési útja;
  5. balloonImageOffset- eltolás a bal felső sarokhoz képest;
  6. ballonShadow— a ballon árnyékának letiltása (egyedi képeknél ez nem befolyásol semmit).

A kiadásjelölt az API egy olyan verziója, amely nyilvános használatra elérhető, de még jóváhagyás alatt áll. A kiadásjelölt stabil verzióként történő telepítése előtt, amint kiadják, teszteljük azokat a hibákat keresve, amelyek API-funkciók romlásához vezethetnek. Ha kiadásjelölteket használ projektjeiben, segíthet nekünk időben azonosítani a lehetséges hibákat. Alkalmazása működését az API új verziójával is előzetesen tesztelheti.

A kiadásjelölteket az alkalmazásfejlesztési és tesztelési környezetben kell használni. Ez segít elkerülni a hibákat az éles környezetben. A következőképpen engedélyezhet egy kiadásjelöltet:



A legelején összekapcsoljuk a maps API-t a http://api-maps.yandex.ru/ címen.

Nézzük meg részletesebben a lehetőségeket:

lang - két paraméterrel beállítva language_region,

nyelv - kétjegyű nyelvkód. ISO 639-1 formátumban van megadva.
régió – kétjegyű országkód. ISO 3166-1 formátumban van megadva.

A Ebben a pillanatban a következő nyelvek támogatottak:

lang=ru_RU;
lang=en_US;
lang=ru_UA;
lang=uk_UA;
lang=tr_TR.

További opciók használhatók:

koordináta – a földrajzi koordináták megadásának sorrendje az API-függvényekben, amelyek bemenetként elfogadják a hosszúság-szélesség párokat (például helyjelző).

Lehetséges értékek:

latlong - [szélesség, hosszúság] - alapértelmezés szerint használatos;
longlat - [hosszúság, szélesség].

Alapértelmezett érték: latlong.

load – A betöltendő modulok listája.

Alapértelmezett érték: package.full.

mód - API betöltési mód.

mode=release - Az API kód ​​csomagolt formában letölthető a forgalom és a végrehajtási sebesség minimalizálása érdekében a böngészőben;
mode=debug - letöltési mód forráskódként.

Alapértelmezett érték: kiadás.

További információ a csatlakozási lehetőségekről

A térkép megjelenítéséhez nullától eltérő méretű tárolót adunk meg, konténerként bármilyen blokk típusú HTML elem használható, a példában ez div.

A térkép paraméterei a kódban vannak beállítva:

myMap = new ymaps.Map('map', (
központ: , // a Nyizsnyij Novgorod térkép közepe
zoom: 12 - zoom szint
});

A térképet a teljes weboldal betöltése után kell elkészíteni. Ezzel megbizonyosodhat arról, hogy a térkép tárolója létrejött, és az azonosítóval elérhető. A térkép inicializálásához az oldal betöltése után használhatja a ready() függvényt.

A kész függvény akkor kerül meghívásra, amikor az API betöltődött és a DOM létrejött.

ymaps.ready(init);

függvény init()(
// Hozzon létre egy példányt a térképből, és kösse össze a tárolóhoz
// adott azonosító ("térkép").
myMap = new ymaps.Map('map', (
// A térkép inicializálásánál meg kell adni
// középpontja és léptéktényezője.
központ: , // Nyizsnyij Novgorod
zoom: 12
});

Alapértelmezés szerint a térkép megjeleníti az összes elérhető vezérlőt.

Térképtípus - séma.

Az API öt beépített térképtípust kínál:

Séma (yandex#map) - alapértelmezés szerint;
Műhold (yandex#satellite);
Hibrid (yandex#hibrid);
Néptérkép (yandex#publicMap);
A nemzeti térkép hibridje (yandex#publicMapHybrid).

Példa a térkép típusának meghatározására Műhold

Példa kód:

A térkép mögött típus - Műhold. Példa térkép létrehozására a Yandex.Maps API 2.1 használatával.



Ahogy korábban is mondtam, az alapértelmezett "mediumMapDefaultSet" vezérlőkészlet alapértelmezés szerint hozzáadódik a térképhez.

A szükséges vezérlőelemek térképhez való hozzáadásához a térkép létrehozásakor a vezérlők paraméterében megadhatja a megfelelő kulcsok listáját.

Itt található a térkép lépték- és típusvezérlőinek példakódja.

Példa kód:



Térképvezérlők. Példa térkép létrehozására a Yandex.Maps API 2.1 használatával.



A viselkedés paraméter segítségével beállítható a térkép viselkedése.

Értékeinek beállításával engedélyezhetjük vagy letilthatjuk a térkép viselkedésének különféle opcióit:

a térkép méretezése az egérgomb dupla kattintásával;

a térkép húzása egérrel vagy egyetlen érintéssel;

a térkép méretezése, amikor a bal egérgombbal egy területet választ ki;

a térkép méretezése többérintéses érintéssel;

a térkép méretezése egy terület kiválasztásakor Jobb klikk egerek;

távolságmérés;

a térkép nagyítása az egér görgőjével.

Kódpélda az egérgörgős zoom letiltásával.



Térképviselkedés szabályozása. Példa térkép létrehozására a Yandex.Maps API 2.1 használatával.



Lehetőség van a térkép paramétereinek módosítására a létrehozása után.

Kapcsolja be az egérgörgős nagyítást

myMap.behaviors.enable("scrollZoom");

Kikapcsolni

myMap.behaviors.disable("scrollZoom");

Új típusú térkép telepítése Folk

myMap.setType('yandex#publicMap');

Új térképközpont beállítása

Ez minden most.

Folytatjuk…