Маркировка със стрелка над полилиния в Android Google Route Map

как да показвате върхове на стрелки над Polyline в Android Google map v2

Преминах през няколко връзки, повечето от тях дават връзка към JS https://google-developers.appspot.com/maps/documentation/javascript/examples/overlay-symbol-arrow, но имам нужда от Android, а не от JS и не мога да използвам тези кодове в Android

Някои използват MapActivity. Следвах урок и за създаване на активност на карта https://developers.google.com/maps/documentation/android/v1/hello-mapview, но не работи. Не мога да генерирам mapactivity и по този начин не можах да използвам наслагванията за местоположение

Имам и някои коментари в публикации, тъй като е наличен във v3, но засега изискването ми е във v2

този въпрос е задаван много пъти тук, знам, но все още не можах да намеря правилен отговор

как мога да покажа стрелка над полилинията, за да покажа посоката, в която трябва да отида

всякакви примери или уроци ще бъдат много полезни.

Благодаря


person Ari    schedule 16.08.2013    source източник
comment
Възможен дубликат на Как да създам стрелки за посока за моите полилинии в android   -  person ByteSlinger    schedule 21.03.2018


Отговори (2)


В демонстрацията на API v2 на Google Maps има клас MarkerDemoActivity, в който вие можете да видите как персонализирано изображение е зададено на GoogleMap. Можете да използвате маркер, за да покажете върха на стрелката по следния начин:

// First you need rotate the bitmap of the arrowhead somewhere in your code
Matrix matrix = new Matrix();
matrix.postRotate(rotationDegrees);
// Create the rotated arrowhead bitmap
Bitmap arrowheadBitmap = Bitmap.createBitmap(originalBitmap, 0, 0,
                      width, height, matrix, true);
// Now we are gonna to add a marker
mArrowhead = mMap.addMarker(new MarkerOptions()
.position(POSITION)
.icon(arrowheadBitmap));

Някои пояснения: Когато чертаете маршрут или ако просто имате две точки за чертане, за да получите rotationDegrees, можете да ги получите, като направите следното:

rotationDegrees = Math.toDegrees(Math.atan2(originLat-destinyLat, originLon-destinyLon));

Класическият алгоритъм на ротационна игра :D

Уверете се, че изображението на върха на стрелката сочи нагоре. Обърнете внимание, че ако не искате да използвате изображение за показване на върха на стрелката и вместо това искате да използвате само полилинии, можете да постигнете това, като вземете последната LatLng точка (където ще покажете върха на стрелката) и използвате Алгоритъм за превод под 45º, за да начертаете двете линии, които образуват върха на стрелката.

person 4gus71n    schedule 06.10.2013
comment
Това работи почти перфектно. Проблемът е, че долната част на растерното изображение започва от позицията, която сте посочили, така че стрелката се появява малко над линията. Изглежда така почти ‹____ вместо ‹---. Някакви решения? - person Kartik_Koro; 05.06.2014
comment
когато добавяте маркер, можете да маркирате изместване. marker.setAnchor(0.5f, 0f); просто си играйте с променливите - person Alpha; 07.04.2015

Наскоро Google внедри тази функция за полилинии в Google Maps Android API v2.

Те добавиха възможност за персонализиране на началните и крайните капачки на полилинии с персонализирано растерно изображение. Използвайки това, ще можете да добавяте върхове на стрелки към вашите полилинии.

Вижте информация за главни букви в Ръководство за фигури. Вижте пример в урока за Полилинии и Полигони.

Можете също да прочетете съответната публикация в блога тук:

https://maps-apis.googleblog.com/2017/02/styling-and-custom-data-for-polylines.html

person xomena    schedule 10.03.2017