LatLng fromLocation = new LatLng(38.5, -100.4); // Whatever origin coordinates
LatLng toLocation = new LatLng(37.7, -107.7); // Whatever destination coordinates
Marker marker = mMap.addMarker(new MarkerOptions().position(firstLocation));
MarkerAnimation.animateMarkerToICS(marker, toLocation, new LatLngInterpolator.Spherical());
对于那些使用GPS /或任何接收位置更新的位置提供者的人:
Marker ourGlobalMarker;
// We've got a location from some provider of ours, now we can call:
private void updateMarkerPosition(Location newLocation) {
LatLng newLatLng = new LatLng(newLocation.getLatitude(), newLocation.getLongitude());
if(ourGlobalMarker == null) { // First time adding marker to map
ourGlobalMarker = mMap.addMarker(new MarkerOptions().position(newLatLng));
}
else {
MarkerAnimation.animateMarkerToICS(ourGlobalMarker, newLatLng, new LatLngInterpolator.Spherical());
}
}
4 回答
Usage Example for DiscDev's answer(上图):
对于那些使用GPS /或任何接收位置更新的位置提供者的人:
IMPORTANT:
在
1MarkerAnimation.java
内如果动画持续时间设置为X,并且您以小于X的速率接收位置更新,则将触发多个动画,并且您可能会看到标记动画稍微闪烁(这不是一个很好的用户体验) .为了避免这种情况,
animationMarkerToICS
方法(例如我在这里animationMarkerToICS
)应该看起来像这样,full method implementation:
请享用 .
从v2的rev.7开始,Marker添加了一个新功能 . Marker.setIcon,这样您就可以使用多个图标来显示方向 .
对于所有不同版本的Android,一些Google工程师提供了一个很好的演示视频,其中包含一些关于如何为起点到终点设置标记动画的优雅示例代码:
相关代码在这里:
https://gist.github.com/broady/6314689
还有一个很好的演示视频,其中包含了所有这些视频 .
http://youtu.be/WKfZsCKSXVQ
OLD DEPRECATED ANSWER BELOW
在文档中,提到标记图标无法更改:
Google Maps API v2 Documentation
您将不得不跟踪特定标记,可能使用类似于此处描述的方法:Link a Marker to an Object,然后确定需要更新的标记 . 在标记上调用
.remove()
,然后根据所需的"direction"创建旋转图像,使用该图像创建新标记,并将新标记添加到 Map 中 .您无需“清除” Map ,只需删除要修改的标记,创建一个新标记,然后将其添加回 Map .
不幸的是,新的Maps API还不是很灵活 . 希望Google继续改进它 .