2013-08-16 41 views
7

如何显示在Android的谷歌地图V2在折线箭头箭头标记过折线在谷歌Android路线图

我已经通过几个环节不见了,他们大多给出了链接到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,因此我不能使用locationoverlays

我也有一些帖子评论因为它是在V3可用,但现在我的要求是在V2

这个问题已经被问很多很多次在这里我都知道,但是我找不到任何合适的回答

我怎么可以显示一个箭头在多段线显示我应该去的方向

任何示例或教程都将非常有帮助。

感谢

回答

3

Google Maps API v2 Demo有一个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点(您要显示箭头的位置)并使用translation算法以45º绘制出两个箭头所在的线。

+1

这工作几乎是完美的。问题是位图的底部从你指定的位置开始,所以箭头出现在线的上方。它看起来像这个<____而不是<---。任何解决方案 –

+1

当你添加标记,你可以标记位移。 marker.setAnchor(0.5f,0f);只是玩变数 – Alpha