Използване на вектори в Google Maps

Съдържание
Картите, генерирани с API на Google Maps Javascript Те не винаги ще бъдат статични, въпреки че през повечето време се използват за визуализация, това не винаги е така, затова понякога ще има случаи, когато ще трябва да разширим обхвата им, така че да могат да показват допълнителна информация в тях.
Тази допълнителна информация, която трябва да включим, се постига с вектор които не са нищо повече от форми, състоящи се от точки, където всички видове вектори, използвани от API Те се наричат наслагвания или наслагване.
ПрепоръкаВ предишни уроци видяхме въвеждането API, прегледахме най -важните опции, научихме как да получим идентификационните данни за разработчиците на Google и ние изпълняваме някои прости примери за неговото използване, затова преди да прочетете съдържанието на този урок или да направите споменатите тук примери, препоръчваме да разгледате този урок.
След като преминахме препоръчания урок и бяхме в контекста, нека преминем към практическите примери, това за по -добро разбиране на използването на вектори в нашите карти, генерирани с API.
Използването на картите, генерирани с API най -често се концентрира върху уебсайтове, където основната му функция е да показва местоположението на фирма или бизнес. Можем да наречем това а гледна точка че можем да го представим без проблем с тип вектор, който за целите на API на Google Карти Javascript Е познат като маркер.
Без повече шум, нека видим стъпките, които трябва да следваме, за да внедрим стандартен маркер и допълнително персонализиран в нашата карта.
1- Първото нещо, което трябва да направим, е да включим API и стиловете за визуализация на нашата карта, важно е да се отбележи, че трябва да използваме нашата Идентификационни данни за програмисти на Google за правилната работа на този пример:
 

2- Определяме нашите глобални променливи, така наречената карта и поредица от променливи, които ще използваме за генериране на случайни маркери според координатите, които обграждат областта на Мадрид.:
 var карта; var minLat = 38, maxLat = 41, minLng = -3, maxLng = -9, markerId = 1; 

3- След това определяме функцията за инициализация на нашата карта, която ще съдържа най -важните опции за нея като мащабиране, основен тип за карта и централни координати които в този случай ще бъдат тези на Мадрид, получаваме документ за самоличност на div от СЛЪНЦЕ, ние инициализираме картата и дефинираме функция за обработка на събитията, когато позиционираме маркерите на картата, нека да разгледаме кодовия сегмент, който току -що описахме:
 функция initializeMap () {google.maps.visualRefresh = вярно; var mapOptions = {center: new google.maps.LatLng (40.41678, -3.70379), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP}; var mapElement = document.getElementById ('divmap'); map = new google.maps.Map (mapElement, mapOptions); eventsMarker (); } 

4- Сега трябва да изградим нашата функция eventsMarker () което ще има в своята дефиниция две събития, свързани на кликване според идентификатора, който е натиснат от две различни връзки и който ще извика още две функции, които ще бъдат отговорни за настройката на отметките:
 functionMarkerEvents () {document.getElementById ('add_Marker'). addEventListener ('щракване', function () {addMarker ();}); document.getElementById ('add_person_Marker'). addEventListener ('щракване', функция () {addPersonMarker ();}); } 

5- Преди да конструирате двете функции, които ще зададат маркерите, е важно да направите малко работа по координатите, така че те да ни предоставят случайни стойности в този диапазон и те да могат да бъдат интерпретирани от API на Google Карти Javascript, ще направим това с някои аритметични операции върху глобалните променливи на координатите, нека видим съответната функция:
 функция createLaLgRandom () {var deltaLat = maxLat - minLat; var deltaLng = maxLng - minLng; var rndNumLat = Math.random (); var newLat = minLat + rndNumLat * deltaLat; var rndNumLng = Math.random (); var newLng = minLng + rndNumLng * deltaLng; връщане на нов google.maps.LatLng (newLat, newLng); } 

6- След като това е направено, можем да изградим нашите функции, за да фиксираме маркерите към нашата карта, за това го правим с метода Маркер За да генерираме стандартен маркер и с предишната функция генерираме случайната координата, където тя ще се показва:
 функция addMarker () {var координата = createLgRandom (); var marker = new google.maps.Marker ({позиция: координата, карта: карта, заглавие: 'Случайна отметка -' + markerId}); markerId ++; } 

Преди да преминем към нашия персонализирана отметка Важно е да се спомене, че то се основава на икони и те трябва да са налични в директорията на нашия проект, за това упражнение някои от безплатните икони, налични на страницата с картички, бяха използвани в категорията маркери, така че те ще работят за нас без никакви проблеми, за това изтегляме някои и ги поставяме в папка, наречена img разположен в основата на нашия проект, както можем да видим на следното изображение:

Увеличете

7- След като имаме нашите икони, трябва само да изградим нашата функция, за това създаваме масив с имената на нашите икони и ще ги изпълняваме на случаен принцип, давайки допълнителен параметър на нашия метод Маркер Наречен икона който ще използва изтегленото изображение за задаване на маркера:
 функция addPersonMarker () {var markerIcons = ['комикси', 'видеоигри', 'компютри', 'hotfood', 'bike_rising']; var rndMarkerId = Math.floor (Math.random () * markerIcons.length); var координата = createLaLgRandom (); var marker = new google.maps.Marker ({позиция: координата, карта: карта, икона: 'img /' + markerIcons [rndMarkerId] + '.png.webp', заглавие: 'Случайна отметка -' + markerId}); markerId ++; } 

8- Накрая добавяме събитието, за да инициализираме нашата карта и да създадем две връзки преди нашия div с идентификаторите, които определяме за нашите събития, които ще извикват съответните функции:
 google.maps.event.addDomListener (прозорец, 'зареждане', InitilizeMap); Добавете отметки
Добавяне на отметка | Добавяне на персонализиран маркер

С това вече имаме нашата карта с функционалността да можем да добавяме стандартни маркери Y персонализиран Според това, което избираме, е важно да споменем, че можем да добавим толкова отметки, колкото искаме, това ще ни позволи да видим работата на API, за да завършим, нека видим как изглежда, когато го стартираме в браузъра си:

Увеличете

Във всички приложения, които откриваме в мрежата, които показват карта, те не изключват възможността за показване на информация, свързана с точката, към която сочат, затова имаме възможност да добавим изскачащ или падащ прозорец за показване на информация според определена позиция на нашата карта или дори маркер, нека видим как можем да направим това:
1- Ще създадем нов файл add_popup.html и ще използваме предишния пример като основа за вмъкване на новите функционалности, за това копираме и поставяме кода на нашата карта и ще намерим функцията initializeMap () където след получаване на идентификационния номер ще определим изскачащия прозорец за центъра на нашата карта с метода InfoWindow, нека видим кода за гореспоменатата функционалност:
 var infowindow = нов google.maps.InfoWindow ({съдържание: 'Изскачащо съдържание:
Този изскачащ прозорец показва центъра на картата, който е Мадрид', позиция: нов google.maps.LatLng (40.41678, -3.70379)}); infowindow.open (карта);

2- Сега ще променим нашата функция addMarker () за да добавим изскачащ прозорец към всеки маркер, който се появява на нашата карта, за това ще използваме функцията отново InfoWindow () и ще добавим събитие за променливата, която дефинираме с екземпляра на метода, нека видим:
 функция addMarker () {var координата = createLgRandom (); var marker = new google.maps.Marker ({позиция: координата, карта: карта, заглавие: 'Случайна отметка -' + markerId}); var infowindow = new google.maps.InfoWindow ({content: 'Marker Info Window - ID:' + markerId}); google.maps.event.addListener (маркер, „щракване“, функция () {infowindow.open (карта, маркер);}); markerId ++; } 

3- След като това стане, нека видим как изглежда нашата карта с функционалността на изскачащия прозорец, който току -що включихме:

Увеличете

4- И накрая, нека видим подобна функционалност, която прилагаме към нашите отметки, правим това, като натискаме връзката Добави отметка:

Увеличете

Както видяхме, разширяването на функционалността на нашите карти и маркери е доста просто, просто трябва да използваме подходящите методи, за да го постигнем.
Вече тествахме силата на векторите, като показваме интересните точки на карта с маркериВъпреки това, можем да използваме вектори за начертаване на линии и показване на маршрута между две точки на нашата карта, нека видим как го правим:
1- Ще създадем файл, наречен add_line.html и ще включим нашия API, както и стиловете от първия пример, сега ще дефинираме координатите, които идват от Мадрид да се Барселона, да видим:
 var координати Line = [[40.41678, -3.70379], [41.4080,2.2293], [40.42697, -3.71379], [41.3974,2.2033], [40.40700, -3.71340], [41.3980,2.2133], [40.42772, -3.71379] , [41.3833,2.1833]]; 

2- Преди да преминем към функцията за инициализация на нашата карта, първо ще създадем функцията addLine () където първото нещо, което ще направим, е да повторим масив от координати и да създадем нов масив, който ще съдържа обект от тип LatLng, да видим:
 функция addLine () {var pointCount = координатаLine.length; var linePath = []; for (var i = 0; i <pointCount; i ++) {var tempLatLng = нов google.maps.LatLng (координатаЛиния [i] [0], координатна линия [i] [1]); linePath.push (tempLatLng); } 

3- След това задаваме свойствата на нашата линия, като цвят, непрозрачност и дебелина. След като направим това, просто трябва да изпратим до метода Полилиния опциите като параметър и задайте променливата на полилинията към текущата карта:
 var lineOptions = {path: linePath, strokeWeight: 7, strokeColor: '# 313cac', strokeOpacity: 0.8} var polyline = new google.maps.Polyline (lineOptions); polyline.setMap (карта); } 

4- Накрая създаваме добре познатата ни функция initializeMap () и вместо да имаме функция, наречена MarkerEvents в края на нея, ще заменим този ред с името на нашата функция addLine (), създаваме нашия HTML и го изпълняваме в браузъра си, той трябва да изглежда така:

Увеличете

В предишния пример добавяме линия към нашата карта и по този начин демонстрираме обединението на две точки, за да демонстрираме маршрута между тях, но този пример, въпреки че е илюстративен, все още няма нещо и е фактът на показване на мобилност между тези две точки , като движеща се кола.
Това може да звучи доста сложно, но не е, с помощта на класовете и методите на API Можем да го разрешим с няколко реда код, нека видим как го правим:
1- Първото нещо е да включим нашите API, нашите стилове и ние дефинираме нашите глобални променливи, използваме същите координати от предишния пример, за да използваме същия път, допълнително дефинираме променливата полилиния като глобален, за да можем да го използваме в пълния обхват на нашия Javascript:
 var карта; var полилиния; var координати Line = [[40.41678, -3.70379], [41.4080,2.2293], [40.42697, -3.71379], [41.3974,2.2033], [40.40700, -3.71340], [41.3980,2.2133], [40.42772, -3.71379] , [41.3833,2.1833]]; 

2- Сега създаваме нашата функция addAnimatedLine () който ще има подобна структура на функцията addLine () От предишния пример обаче тази функция ще има определението на символа, който ще използваме, за да покажем движещия се обект между тези две точки, за този случай ще използваме стрелка:
 var arrowSymbol = {strokeColor: '# 000', мащаб: 3, път: google.maps.SymbolPath.FORWARD_CLOSED_ARROW}; 

3- Накрая трябва само да зададем тази променлива на опцията икони от дефиницията на линията:
 var lineOptions = {пътека: linePath, икони: [{icon 

4- След като това е направено, трябва само да анимираме нашата икона и правим това в извиканата функция animateArrow () което трябва да включим в края на дефиницията на функцията addAnimatedLine () Нека да видим какво съдържа функцията:
 функция animateArrow () {var counter = 0; var accessVar = window.setInterval (function () {counter = (counter + 1)% 100; var arrows = polyline.get ('icons'); стрелки [0]. offset = (counter / 2) + '%'; polyline.set ('икони', стрелки);}, 50); } 

5- За да завършим, инициализираме нашата карта, както вече знаем, и извикваме нашата функция addAnimatedLine ()Нека да видим, когато изпълняваме как изглежда в нашия браузър, важно е да споменем, че стрелката има ефект на преместване от точка до точка:

Увеличете

С този последен пример приключваме този урок, тъй като видяхме, че използването на вектори в нашите карти ни позволява да увеличим тяхната функционалност и полезност, като ни дава възможност да внедрим интересни точки до алтернативни маршрути до точките, които поставяме в него .Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave