Skip to content

Commit

Permalink
Android: add support for lineDashPattern
Browse files Browse the repository at this point in the history
  • Loading branch information
kruyvanna committed Jul 12, 2018
1 parent 49e63e9 commit f0ac2e5
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@
import com.facebook.react.bridge.ReadableMap;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.Cap;
import com.google.android.gms.maps.model.Dash;
import com.google.android.gms.maps.model.Dot;
import com.google.android.gms.maps.model.Gap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.PatternItem;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.gms.maps.model.RoundCap;
Expand All @@ -25,6 +29,8 @@ public class AirMapPolyline extends AirMapFeature {
private boolean geodesic;
private float zIndex;
private Cap lineCap = new RoundCap();
private ReadableArray patternValues;
private List<PatternItem> pattern;

public AirMapPolyline(Context context) {
super(context);
Expand Down Expand Up @@ -76,6 +82,38 @@ public void setLineCap(Cap cap) {
polyline.setStartCap(cap);
polyline.setEndCap(cap);
}
this.applyPattern();
}

public void setLineDashPattern(ReadableArray patternValues) {
this.patternValues = patternValues;
this.applyPattern();
}

private void applyPattern() {
if(patternValues == null) {
return;
}
this.pattern = new ArrayList<>(patternValues.size());
for (int i = 0; i < patternValues.size(); i++) {
float patternValue = (float) patternValues.getDouble(i);
boolean isGap = i % 2 != 0;
if(isGap) {
this.pattern.add(new Gap(patternValue));
}else {
PatternItem patternItem = null;
boolean isLineCapRound = this.lineCap instanceof RoundCap;
if(isLineCapRound) {
patternItem = new Dot();
}else {
patternItem = new Dash(patternValue);
}
this.pattern.add(patternItem);
}
}
if(polyline != null) {
polyline.setPattern(this.pattern);
}
}

public PolylineOptions getPolylineOptions() {
Expand All @@ -94,6 +132,7 @@ private PolylineOptions createPolylineOptions() {
options.zIndex(zIndex);
options.startCap(lineCap);
options.endCap(lineCap);
options.pattern(this.pattern);
return options;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.graphics.Color;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;

import com.facebook.react.bridge.ReactApplicationContext;
Expand Down Expand Up @@ -92,6 +93,12 @@ public void setlineCap(AirMapPolyline view, String lineCap) {
view.setLineCap(cap);
}

@ReactProp(name = "lineDashPattern")
public void setLineDashPattern(AirMapPolyline view, ReadableArray patternValues) {
Log.i("VANNA", "setLineDash " + patternValues);
view.setLineDashPattern(patternValues);
}

@Override
@Nullable
public Map getExportedCustomDirectEventTypeConstants() {
Expand Down

0 comments on commit f0ac2e5

Please sign in to comment.