2016-08-16 63 views
1

我使用Xamarin並添加了Google Map。 由於許可的原因,我想用另一種方法替換google maps api。使用Xamarin Mapbox的折線和標記的問題

我發現MapBox,工作得很好。 不過我在使用MapBox時遇到了一些問題。

  • 折線
    我需要改變線路的顏色,而是PolyLine.Color是隻讀的。
    如何更改顏色?

  • 折線
    我需要切換可見性。這個功能似乎尚未實現。
    它似乎最近被添加到mapbox/mapbox-gl-native下#5663
    任何想法,當這將被Xamarin採摘?

  • 折線
    我需要改變點後。再次點只是只讀
    是否有任何方式訪問點?(例如,通過使用Handle?!?)

  • 標記
    我需要切換可見性。也沒有實施的方法。
    解決方法的任何想法?

回答

0

過了一會兒,我想通了Android的這些功能:

void PolylineOptions_SetWidth(PolylineOptions obj, float width) 
    { 
     try 
     { 
      Java.Lang.Reflect.Method method = obj.Class.GetMethod("width", new Java.Lang.Class[] { Java.Lang.Float.Type }); 
      method.Invoke(obj, new Java.Lang.Object[] { (Java.Lang.Float)(float)width }); 
     } 
     catch (Java.Lang.SecurityException e) 
     { 
      // exception handling here 
     } 
     catch (Java.Lang.NoSuchMethodException e) 
     { 
      // exception handling here 
     } 
    } 

    void PolylineOptions_SetColor(PolylineOptions obj, int col) 
    { 
     try 
     { 
      Java.Lang.Reflect.Method method = obj.Class.GetMethod("color", new Java.Lang.Class[] { Java.Lang.Integer.Type }); 
      method.Invoke(obj, new Java.Lang.Object[] { col }); 
     } 
     catch (Java.Lang.SecurityException e) 
     { 
      // exception handling here 
     } 
     catch (Java.Lang.NoSuchMethodException e) 
     { 
      // exception handling here 
     } 
    } 

    void PolylineOptions_SetAlpha(PolylineOptions obj, float col) 
    { 
     try 
     { 
      Java.Lang.Reflect.Method method = obj.Class.GetMethod("alpha", new Java.Lang.Class[] { Java.Lang.Float.Type }); 
      method.Invoke(obj, new Java.Lang.Object[] { col }); 
     } 
     catch (Java.Lang.SecurityException e) 
     { 
      // exception handling here 
     } 
     catch (Java.Lang.NoSuchMethodException e) 
     { 
      // exception handling here 
     } 
    } 

    void Polyline_SetAlpha(Polyline obj, float col) 
    { 
     try 
     { 
      Java.Lang.Reflect.Method method = obj.Class.GetMethod("alpha", new Java.Lang.Class[] { Java.Lang.Float.Type }); 
      method.Invoke(obj, new Java.Lang.Object[] { col }); 
     } 
     catch (Java.Lang.SecurityException e) 
     { 
      // exception handling here 
     } 
     catch (Java.Lang.NoSuchMethodException e) 
     { 
      // exception handling here 
     } 
    }