Yandex žemėlapių api 2.1. Greitinimo ir optimizavimo darbai
2014 m. balandžio 29 d. buvo paskelbta, kad naujoji Yandex.Maps API 2.1 versija nebėra beta versija, todėl dabar galite saugiai pereiti prie jos.
Keliose kitose pastabose ketinu jus supažindinti su šia API versija.
Pagrindiniai skiriamieji Yandex.Maps JavaScript API 2.1 versijos bruožai:
— naujas adaptyvus žemėlapių sąsajų dizainas;
- multirouter - galimybė sukurti visus įmanomus maršrutus vietoj vieno;
- modulinė API sistema. Visų API modulių sąrašas pateikiamas nuorodoje.
- naujas būdas rodyti objektus žemėlapyje, leidžiantis sukurti daugiau etikečių nei 2.0 versijoje.
Galima perskaityti išsamią dokumentaciją apie naują Yandex.Maps API 2.1 versiją.
Pažiūrėkime į paprasčiausią žemėlapio kūrimo naudojant Yandex.Maps 2.1 API pavyzdį.
Štai jo kodas:
Pačioje pradžioje sujungiame žemėlapių API adresu http://api-maps.yandex.ru/
Pažvelkime į parinktis išsamiau:
lang – nustatoma dviem parametrais language_region,
kalba – dviženklis kalbos kodas. Nurodyta ISO 639-1 formatu.
regionas – dviženklis šalies kodas. Nurodyta ISO 3166-1 formatu.
Šiuo metu palaikomos šios lokalės:
lang=ru_RU;
lang=en_US;
lang=ru_UA;
lang=uk_UA;
lang=tr_TR.
Galima naudoti papildomas parinktis:
koordinatorius – tvarka, kuria geografinės koordinatės nurodomos API funkcijose, kurios priima ilgumos ir platumos poras kaip įvestį (pavyzdžiui, vietos žymeklis).
Galimos reikšmės:
latlong – [platuma, ilguma] – naudojamas pagal numatytuosius nustatymus;
longlat – [ilguma, platuma].
Numatytoji vertė: latlong.
įkelti – įkeliamų modulių sąrašas.
Numatytoji reikšmė: package.full.
režimas – API įkėlimo režimas.
mode=release – API kodą galima atsisiųsti supakuotą, kad būtų sumažintas srautas ir vykdymo greitis naršyklėje;
mode=debug – atsisiuntimo režimas kaip šaltinio kodas.
Numatytoji reikšmė: leidimas.
Skaitykite daugiau apie ryšio parinktis
Žemėlapiui rodyti nurodomas ne nulinio dydžio konteineris, kaip konteineris gali būti naudojamas bet koks bloko tipo HTML elementas, pavyzdyje tai div.
Žemėlapio parametrai nustatomi kode:
myMap = naujas ymaps.Map('žemėlapis', (
centras: , // Nižnij Novgorodo žemėlapio centras
priartinimas: 12 – priartinimo lygis
});
Žemėlapis turėtų būti sukurtas įkėlus visą tinklalapį. Taip įsitikinsite, kad žemėlapio konteineris buvo sukurtas ir jį galima pasiekti naudojant ID. Norėdami inicijuoti žemėlapį įkėlus puslapį, galite naudoti funkciją ready().
Paruošta funkcija bus iškviesta, kai bus įkelta API ir sugeneruotas DOM.
ymaps.ready(init);
funkcija init()(
// Sukurkite žemėlapio egzempliorių ir susiekite jį su konteineriu
// suteiktas ID („žemėlapis“).
myMap = naujas ymaps.Map('žemėlapis', (
// Inicijuojant žemėlapį reikia nurodyti
// jo centras ir mastelio koeficientas.
centras: , // Nižnij Novgorodas
priartinimas: 12
});
Pagal numatytuosius nustatymus žemėlapyje rodomi visi galimi valdikliai.
Žemėlapio tipas – schema.
API pateikia penkis integruotus žemėlapių tipus:
Schema (yandex#map) – pagal numatytuosius nustatymus;
Palydovas (yandex#satellite);
Hibridas (yandex#hibridas);
Žmonių žemėlapis (yandex#publicMap);
Nacionalinio žemėlapio hibridas (yandex#publicMapHybrid).
Pavyzdys, kaip nustatyti žemėlapio tipą Palydovas
Kodo pavyzdys:
Kaip jau sakiau anksčiau, numatytasis „mediumMapDefaultSet“ valdiklių rinkinys pridedamas prie žemėlapio pagal numatytuosius nustatymus.
Norėdami į žemėlapį įtraukti reikiamus valdiklius, kurdami žemėlapį valdymo elementų parametre galite nurodyti atitinkamų klavišų sąrašą.
Čia yra žemėlapio mastelio ir tipo valdiklių kodo pavyzdys.
Kodo pavyzdys:
|
Galima nustatyti žemėlapio elgseną naudojant elgesio parametrą.
Nustatydami jo reikšmes, galime įjungti arba išjungti įvairias žemėlapio veikimo parinktis:
žemėlapio mastelio keitimas dukart spustelėjus pelės mygtuką;
žemėlapio vilkimas pele arba vienu prisilietimu;
žemėlapio mastelio keitimas renkantis sritį kairiuoju pelės mygtuku;
žemėlapio mastelio keitimas kelių lietimų paspaudimu;
žemėlapio mastelio keitimas renkantis sritį dešiniuoju pelės mygtuku;
atstumo matavimas;
žemėlapio mastelio keitimas pelės ratuku.
Kodo pavyzdys, kai išjungtas pelės ratuko priartinimas.
|
Sukūrus žemėlapio parametrus galima keisti.
Įjunkite pelės ratuko priartinimą
myMap.behaviors.enable("scrollZoom");
Išjunk
myMap.behaviors.disable("scrollZoom");
Diegiame naujo tipo žemėlapį Folk
myMap.setType('yandex#publicMap');
Naujo žemėlapių centro nustatymas
Tai kol kas viskas.
Tęsinys…
Galimas leidimas yra API versija, kurią galima naudoti viešai, tačiau ji vis dar tvirtinama. Prieš diegiant leidimo kandidatą kaip stabilią versiją, kai tik ji išleidžiama, ji patikrinama, ar nėra klaidų, dėl kurių gali pablogėti API funkcijos. Savo projektuose naudodami kandidatus į leidimą galite padėti mums laiku nustatyti galimas klaidas. Taip pat galite iš anksto išbandyti savo programos veikimą naudodami naują API versiją.
Kandidatai į leidimą turėtų būti naudojami programų kūrimo ir testavimo aplinkoje. Tai padės išvengti klaidų gamybos aplinkoje. Galite įgalinti leidimo kandidatą taip:
If some time after publishing a release candidate no errors that lead to functionality degradation are found, the release candidate is installed as a stable version of the API and can be accessed via the link api-maps.yandex.ru/2.1.
Enabling the current version
When using your application, we recommend specifying the major version (i.e., do not specify the third number of the version). This guarantees that the current version, that is, the latest stable version of the corresponding major version, will be automatically enabled. For example, if you specify version 2.1, the latest available stable version 2.1.x will be enabled (for example, 2.1.47):
Enabling a set version
Although full compatibility is guaranteed between minor versions, in rare cases you may find that your client application does not work as intended when you enable the latest API version. To avoid these situations, in particularly crucial cases you may need to enable a specific API version. For that, specify its number in its entirety:
Note. If you use a set version, try regularly switching it to a newer version (for example, once every few months). The matter is that over time we can disable the minor version you are using in your project, and then the current version of the API will be enabled automatically. However, the version update might cause your app to stop working correctly. For this reason, we recommend that you keep track of API updates and switch to newer versions as soon as possible.
Summary table
The table below provides recommendations for enabling different versions of the API, depending on the type and complexity of your project.
Project type | ||
---|---|---|
Project type | Recommended version for running applications | Recommended version under development |
---|---|---|
Medium and large projects with a basic map | Latest version of to test the functionality. |
|
Medium and large projects with complex map features | Set version to test the functionality. |
|
Projects using the commercial version of the API | Set version (see the note below) |
Note. If you use a set version, try regularly switching it to a newer version. The matter is that over time we can disable the minor version you are using in your app, and then the current version of the API will be enabled automatically. However, the version update might cause your app to stop working correctly. For this reason, we recommend that you keep track of API updates and switch to newer versions as soon as possible.
В данной статье я хочу начать цикл статей по работе с API Яндекс.Карт. Документация Яндекс.Карт достаточно полна, но степень разрозненности информации в ней высокая, при первом заходе в документацию без пол-литры не разобраться, и для решения какой-то проблемы можно потратить много времени на поиск по документации и в поисковике. Этот цикл статей будет рассказывать о практических решениях наиболее частых случаев использования API Яндекс.Карт последней, на момент написания статьи, версии 2.1.
При вёрстке сайта в контактной информации часто бывает необходимость вставки карты, на которой будет отмечено местоположение организации, для которой разрабатывается сайт. В самых простых случаях это может быть просто скриншот c онлайн-карт (или не онлайн):
Для вставки интерактивной карты может использоваться конструктор карт
https://tech.yandex.ru/maps/tools/constructor/ :
В случае, если нам нужно более продвинутое использование карт (свои метки, программное перемещение карт и т.п.), то для этого надо использовать API Яндекс.Карт: https://tech.yandex.ru/maps/jsapi/ . В качестве примера использования карт в статье будет рассмотрено создание карты с простым добавлением пользовательских метки и балуна.
Для начала подключим компоненты API:
Jei naudojant žemėlapius kuriama didelė programa, geriau prijungti tam tikros versijos API komponentus, kad atnaujinant API „Yandex“ pusėje gamyboje niekas nenutrūktų:
Žemėlapį reikės įdėti į kokį nors bloką, pavyzdžiui, į div#žemėlapis. Toliau šiame bloke turi būti sukurtas žemėlapis (suaktyvinus žemėlapio ir DOM parengties įvykį):
ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("žemėlapis" , ( centras: [ 55.76 , 37.64 ] , mastelio keitimas: 7 ) ) ; ) |
Čia nurodome:
- bloko identifikatorius žemėlapį, kur kursime žemėlapį;
- centras— žemėlapio centras, nurodantis plotį ir ilgumą;
- priartinti— žemėlapio mastelio koeficientas.
Pagal numatytuosius nustatymus „Yandex.Maps“ sukuria daug nereikalingų elementų, kurių daugeliu atvejų svetainėse nereikia. Iš esmės valdikliams ir žemėlapio veikimui pakanka taikyti 2 sąlygas:
- iš žemėlapio elementų yra tik mastelio keitimo slankiklis;
- žemėlapis neturėtų būti padidintas naudojant pelės slinktį.
Norėdami įvykdyti šiuos reikalavimus, papildome kodą:
ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("žemėlapis" , ( centras: [ 55.76 , 37.64 ] , mastelio keitimas: 13 , valdikliai: ) ) ; myMap.behaviors .disable ("scrollZoom") ; myMap. valdikliai .add ("zoomControl" , ( padėtis: ( viršuje: 15 , kairėje: 15 ) ) ; ) |
Čia mes esame neįgalūs slinkties mastelio keitimas ir pridėjo "Mastelio keitimas" pastatytas iš viršutinio kairiojo kampo.
Dabar prie žemėlapio turime pridėti etiketę, nes straipsniui atsisiųsime jo vaizdą iš http://medialoot.com/item/free-vector-map-location-pins/ ir įdėsime į kodą taip:
ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("žemėlapis" , ( centras: [ 55.7652 , 37.63836 ] , mastelio keitimas: 17 , valdikliai: ) ) ; myMap.behaviors .disable ("scrollZoom" ) ) valdikliai .add ("zoomControl" , ( padėtis: ( viršuje: 15 , kairėje: 15 ) ) ) ; var myPlacemark = new ymaps.Placemark ([ 55.7649 , 37.63836 ] , ( ) , ( iconLayout: "default,#imamage" : , iconImageSize: [ 40 , 51 ] , iconImageOffset: [ - 20 , - 47 ] ) ) ; myMap.geoObjects .add (manoVietos žymeklis) ; ) |
Čia deklaruojame kintamąjį myPlacemark, kuriame įrašome žymeklį, pirmame parametre ymaps.Vietos žymeklis nurodykite etiketės koordinates, o trečiajame parametre:
- nurodyti piktogramos išdėstymas kad bus naudojamas tinkintos etiketės vaizdas;
- iconImageHref- kelias į vaizdą;
- piktogramaVaizdo dydis- nurodyti vaizdo dydį;
- iconImageOffset- nurodome poslinkį iš viršutinio kairiojo paveikslo kampo į vaizdo tašką, kurį nukreipiame į mums reikalingą objektą. Tai būtina, kad padidinus žemėlapio mastelį etiketės padėtis nenuklystų. Kodėl poslinkis nurodomas neigiamomis reikšmėmis - API kūrėją žino tik Dievas.
Ir per myMap.geoObjects.add() pridėti žymeklį prie žemėlapio.
O dabar darysime balioną, kuris bus rodomas paspaudus žemėlapio etiketę, baliono maketą ir jo turinį paimsime iš http://designdeck.co.uk/a/1241
ymaps.ready(init) ; function init() ( var myMap; myMap = new ymaps.Map ("žemėlapis" , ( centras: [ 55.7652 , 37.63836 ] , mastelio keitimas: 17 , valdikliai: ) ) ; myMap.behaviors .disable ("scrollZoom" ) ) valdikliai .add ("zoomControl" , ( padėtis: ( viršuje: 15 , kairėje: 15 ) ) ) ; var html = " "; html += ""
; 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 ] , balionas:VaizdasHref "http://site/files/APIYaMaps1/min_popup.png", balionasImageOffset: [ - 144 , - 147 ] , balloonImageSize: [ 289 , 151 ] , balloonShadow: false ) ) ; myMap.geoObjects .add (myPlacemark) ; )"; html += " " ; html += "Viktorijos bokšto sodai " ; html += "" ; html +="Londono miestas " ; html += "" ; html += "Jungtinė Karalystė " ; html += "020 7641 5264 " ; html += " |
Mes esame čia:
- v balionasTurinys nurodyti turinį, kuris bus rodomas atidarius balioną;
- baliono išdėstymas- nurodykite, kad pasirinktinis vaizdas bus naudojamas kaip baliono maketas;
- balionasContentSize ir balionasImageSize— atitinkamai turinio ir vaizdų dydžiai;
- balionasImageHref- kelias į vaizdą;
- balionasImageOffset- poslinkis viršutinio kairiojo kampo atžvilgiu;
- balionasŠešėlis- baliono šešėlio išjungimas (tai neturi įtakos pasirinktiniams vaizdams).