マップ(MapBox)にGPSトラックを描画し、そのポイントを速度または高度で色付けしたいと考えています。だから私はトラックのためのカスタム引き出しが必要です。MapBoxで速度/高度でポリライン/ GeoJSONラインの色を付けるにはどうすればいいですか?
MapBox AndroidのSDKは、カスタマイズされたスタイルでポリラインを描画する例を提供: https://www.mapbox.com/android-sdk/examples/add-a-geojson-line/ をしかし、まだそれがデータによって駆動されていない静的なスタイル、です。
例のこの部分は、関心の点である:
lineLayer.setProperties(
PropertyFactory.lineDasharray(new Float[]{0.01f, 2f}),
PropertyFactory.lineCap(Property.LINE_CAP_ROUND),
PropertyFactory.lineJoin(Property.LINE_JOIN_ROUND),
PropertyFactory.lineWidth(5f),
PropertyFactory.lineColor(Color.parseColor("#e55e5e"))
);
PropertyFactory
方法はFunction
パラメータを使用して実装しています。私はそれがまさに私が探しているものであると思う。しかし、その実装を使用するマニュアルや例は見つかりませんでした。
カスタム引き出しについてのご意見はありますか?
Javaから移植されたMapBox Android SDKを使用して、C#でXamarin.Androidアプリを開発します。
UPD:私はC#の物事はJavaから少し異なっている使用したよう :
[JavaTypeParameters(new[] { "T" })]
[Register("com/mapbox/mapboxsdk/style/layers/Function", DoNotGenerateAcw = true)]
public class Function : Java.Lang.Object
{
protected Function(IntPtr javaReference, JniHandleOwnership transfer);
public virtual Float Base { get; }
protected override IntPtr ThresholdClass { get; }
protected override Type ThresholdType { get; }
[JavaTypeParameters(new[] { "T" })]
[Register("stop", "(FLcom/mapbox/mapboxsdk/style/layers/Property;)Lcom/mapbox/mapboxsdk/style/layers/Function$Stop;", "")]
public static Stop InvokeStop(float @in, Property output);
[JavaTypeParameters(new[] { "I", "O" })]
[Register("com/mapbox/mapboxsdk/style/layers/Function$Stop", DoNotGenerateAcw = true)]
public class Stop : Java.Lang.Object
{
protected Stop(IntPtr javaReference, JniHandleOwnership transfer);
[Register("in")]
public Java.Lang.Object In { get; set; }
[Register("out")]
public Java.Lang.Object Out { get; set; }
protected override IntPtr ThresholdClass { get; }
protected override Type ThresholdType { get; }
}
}
UPD2:それはアセンブリメタデータに見られるよう Function
型の定義は以下の通りです。
LineLayer lineLayer = new LineLayer("linelayer", "line-source");
lineLayer.SetProperties(new Property[] {
PropertyFactory.LineColor("**What should be here?**"),
PropertyFactory.Visibility(Property.Visible),
PropertyFactory.LineWidth((Java.Lang.Float)3f)
});
データ形式は任意です。私はそれを必要な形に変換することができます。私はAPIのC#ポートを使用するので、Javaとは少し異なります。あなたの例はこれに変換されます: 'LineLayer lineLayer = new LineLayer(" linelayer "、" line-source "); lineLayer.SetProperties(新しいプロパティ[] { PropertyFactory.LineColor( "ここで何を?")、 PropertyFactory.Visibility(Property.Visible)、 PropertyFactory.LineWidth((java.lang.Floatの)3F) }) ; '' LineColor'パラメータには何を入れるべきですか? – Zidar
この例では適切なC#コードを教えてください。 – Zidar
申し訳ありませんが、スニペットを提供するために、C#でランタイムスタイリングを使用することに慣れていません。 – cammace