2017-02-28 7 views
0

MyLocationViewの位置をMapViewMapboxに変更したいとします。私はカスタムマーカーを使いたくありません。ベアリングを計算してこれをマーカーに追加すると(ナビゲーションアプリのように)、センサの再配置やベアリング操作の変更にマーカより滑らかです(センサフュージョン& GPSベアリングが必要です)。MyLocationView私はMapbox MyLocationViewを続けています。 MapViewに位置情報を表示して追跡を行っています。私が行っていることである。Mapbox Android SDKでMyLocationViewを再配置するにはどうすればいいですか?

mapView.getMapAsync(new OnMapReadyCallback() { 
    @Override 
    public void onMapReady(MapboxMap mapboxMap) { 
     map = mapboxMap; 

     map.setMyLocationEnabled(true); 
     map.getTrackingSettings().setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); 
     map.getTrackingSettings().setMyBearingTrackingMode(MyBearingTracking.COMPASS); 
     map.getTrackingSettings().setDismissBearingTrackingOnGesture(false); 
     map.getMyLocationViewSettings().setForegroundDrawable(iconDrawable, iconDrawable); 
     map.getMyLocationViewSettings().setBackgroundTintColor(Color.parseColor("#56B881")); 
     map.getMyLocationViewSettings().setForegroundTintColor(Color.parseColor("#FFFFFF")); 
     map.getMyLocationViewSettings().setAccuracyTintColor(Color.parseColor("#56B881")); 
    } 
}); 

マイビュー: enter image description here

ので、私はお願いしたいと思いますMapbox AndroidのSDKにMyLocationViewの場所を更新することが可能ですか?私は多くの検索をしますが、私はそれを理解できません。おそらくこれについてのトリックがあります。

答えて

1

まず、あなたがあなたの場所を更新することができ、次のオーバーライドメソッドではその後、このパッケージ com.mapbox.services.android.navigation.v5.listeners.ProgressChangeListener
から、あなたの活動にProgressChangeListenerを実装する必要があります

@Override 
public void onProgressChange(Location location, RouteProgress 
routeProgress) { 
    Log.e(TAG, "onProgressChange" + location); 
    Log.d(TAG, "onProgressChange: fraction of route traveled: %f" 
    + routeProgress.getFractionTraveled()); 
    if(mapboxMap.getMyLocation()!=null){ 
     mapboxMap.getMyLocation().setLatitude(location.getLatitude());  
     mapboxMap.getMyLocation().setLongitude(location.getLongitude()); 
    } 
} 

そして、あなたは同じことを行うことができます実装OffRouteListenerからuserOffRoute方法について 。また

私はbuild.gradleに、私は次の依存関係

compile('com.mapbox.mapboxsdk:mapbox-android-sdk:[email protected]') { 
    transitive = true 
} 
compile 'com.mapbox.mapboxsdk:mapbox-android-ui:2.1.3' 
compile 'com.mapbox.mapboxsdk:mapbox-android-services:2.1.3' 
compile 'com.mapbox.mapboxsdk:mapbox-android-telemetry:2.1.3' 
compile 'com.mapbox.mapboxsdk:mapbox-android-navigation:0.3.1' 
compile 'com.mapbox.mapboxsdk:mapbox-java-core:2.1.3' 
compile 'com.mapbox.mapboxsdk:mapbox-java-geojson:2.1.3' 
compile 'com.mapbox.mapboxsdk:mapbox-java-services:2.1.3' 
compile 'com.mapbox.mapboxsdk:mapbox-java-services-rx:2.1.3' 
0

私はリスナーを使用し、それは後にも

mapboxMap.setOnMyLocationChangeListener(myLocationChangeListener); 
mapboxMap.setMyLocationEnabled(true); 

private MapboxMap.OnMyLocationChangeListener myLocationChangeListener = new MapboxMap.OnMyLocationChangeListener() { 

    @Override 
    public void onMyLocationChange(@Nullable Location location) { 

    } 
}; 

働きを持っていることに気づくしたいと思います

myLocationChangeListener.onMyLocationChange(location); 
関連する問題