2013-08-16 44 views
7

làm thế nào để hiển thị Đầu mũi tên trên Polyline trong bản đồ v2 Android Googlemũi tên Đánh dấu trên Polyline trong Android Google Route Map

Tôi đã trải qua vài liên kết, hầu hết trong số họ cung cấp cho liên kết đến JS https://google-developers.appspot.com/maps/documentation/javascript/examples/overlay-symbol-arrow nhưng tôi cần trong Android không JS và tôi không thể sử dụng những mã trong Android

một số đang sử dụng mapActivity tôi đi theo một hướng dẫn để tạo hoạt động bản đồ quá https://developers.google.com/maps/documentation/android/v1/hello-mapview nhưng nó làm việc tôi không thể tạo ra mapactivity và do đó tôi không thể sử dụng locationoverlays

tôi cũng có một số bài đăng nhận xét vì nó có sẵn trong v3 nhưng bây giờ yêu cầu của tôi là trong v2

câu hỏi này đã được hỏi rất nhiều nhiều lần ở đây tôi biết nhưng vẫn tôi không thể tìm thấy bất kỳ câu trả lời thích hợp

làm thế nào tôi có thể hiển thị một mũi tên trên polyline để hiển thị hướng mà tôi phải đi theo số

mọi ví dụ hoặc hướng dẫn sẽ rất hữu ích.

nhờ

Trả lời

3

Trong Google Maps API v2 Demo có một lớp MarkerDemoActivity trong đó bạn có thể thấy một hình ảnh tùy chỉnh được thiết lập để một googlemap. Bạn có thể sử dụng một dấu hiệu để hiển thị các mũi tên như thế này:

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

Một số làm rõ: Khi bạn đang vẽ một con đường, hoặc nếu bạn chỉ có hai điểm để vẽ, để có được những rotationDegrees bạn có thể nhận được chúng bằng cách làm này:

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

các thuật toán xoay trò chơi cổ điển: D

Hãy chắc chắn về điều đó bạn hình ảnh mũi tên hướng lên trên. Lưu ý rằng nếu bạn không muốn sử dụng hình ảnh để hiển thị đầu mũi tên và thay vào đó, bạn chỉ muốn sử dụng Polylines, bạn có thể đạt được điều đó bằng cách lấy điểm LatLng cuối cùng (nơi bạn sẽ hiển thị đầu mũi tên) và sử dụng Thuật toán translation bằng 45º để vẽ hai dòng tạo đầu mũi tên.

+1

này hoạt động gần như hoàn hảo. Vấn đề là phần dưới của bitmap bắt đầu tại vị trí bạn chỉ định, do đó mũi tên xuất hiện hơi trên dòng. Có vẻ như điều này gần như <____ thay vì <---. Bất kỳ giải pháp? –

+1

khi bạn thêm điểm đánh dấu, bạn có thể đánh dấu dịch chuyển. marker.setAnchor (0.5f, 0f); chỉ chơi với các biến – Alpha

2

Gần đây, Google đã triển khai tính năng này cho các đường polylines trong API Android Maps phiên bản 2.0 của Google Maps.

Họ đã thêm khả năng tùy chỉnh mũ bắt đầu và kết thúc của các đường polylines bằng bitmap tùy chỉnh. Sử dụng điều này, bạn sẽ có thể thêm đầu mũi tên vào các ô vuông của mình.

Xem thông tin về Line Caps trong Shapes Guide. Xem example trong hướng dẫn Polylines and Polygons.

Bạn cũng có thể đọc các bài viết trên blog tương ứng ở đây:

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

Các vấn đề liên quan