sun*_*nil 15 android location google-maps
是否可以使用闪亮的蓝色光束而不是android google MapFragment中不显眼的箭头?此新功能适用于Android上的Google地图.如何在应用程序中实现它?请分享您的想法.
谢谢!
我假设您本质上想用自己的方向指示器替换方向指示器?如果您正在寻找完整的“到达目的地的线路”,这里已经有答案。
这个答案建议从LocationListener覆盖开始设置自定义图标(.icon(yourIcon)on MarkerOptions):
public class MyLocationLayer implements LocationListener {
private GoogleMap map;
private BitmapDescriptor markerDescriptor;
private boolean drawAccuracy = true;
private int accuracyStrokeColor = Color.argb(255, 130, 182, 228);
private int accuracyFillColor = Color.argb(100, 130, 182, 228);
private Marker positionMarker;
private Circle accuracyCircle;
public MyLocationLayer(GoogleMap map, int markerResource) {
this.map = map;
markerDescriptor = BitmapDescriptorFactory.fromResource(markerResource);
}
public void setDrawAccuracy(boolean drawAccuracy) {
this.drawAccuracy = drawAccuracy;
}
public void setAccuracyStrokeColor(int color) {
this.accuracyStrokeColor = color;
}
public void setAccuracyFillColor(int color) {
this.accuracyFillColor = color;
}
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
float accuracy = location.getAccuracy();
if (positionMarker != null) {
positionMarker.remove();
}
final MarkerOptions positionMarkerOptions = new MarkerOptions()
.position(new LatLng(latitude, longitude))
.icon(markerDescriptor)
.anchor(0.5f, 0.5f);
positionMarker = map.addMarker(positionMarkerOptions);
if (accuracyCircle != null) {
accuracyCircle.remove();
}
if (drawAccuracy) {
final CircleOptions accuracyCircleOptions = new CircleOptions()
.center(new LatLng(latitude, longitude))
.radius(accuracy)
.fillColor(accuracyFillColor)
.strokeColor(accuracyStrokeColor)
.strokeWidth(2.0f);
accuracyCircle = map.addCircle(accuracyCircleOptions);
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以添加.rotation()afternew MarkerOptions()来设置设备的当前旋转。这可以通过在片段/活动上设置一个参数(例如private Int rotation = 0)并更新它来完成。
SensorEventListener此更新将通过在片段/活动中实现并在内部onSensorChanged(event: SensorEvent)更新设备旋转的缓存来完成。
从加速度计和磁场获取旋转(方位角)的一种相当复杂的方法是这个答案,以及一些替代方案。
确保您适当地取消注册您的听众!
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |