Skip to content

Commit ee181a6

Browse files
committed
checkpoint - don't merge yet (got a few questions).
1 parent 4197bf5 commit ee181a6

8 files changed

Lines changed: 89 additions & 24 deletions

File tree

library/src/main/assets/google_map.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
AirMapView.onMapLoaded();
3939
}
4040

41+
function setTouchEnabled(enabled) {
42+
map.setOptions({draggable: enabled, zoomControl: enabled, scrollwheel: enabled, disableDoubleClickZoom: !enabled});
43+
}
44+
4145
function clearMarkers() {
4246
for (var key in markers) {
4347
markers[key].setMap(null);

library/src/main/java/com/airbnb/android/airmapview/AirGoogleMapOptions.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ public AirGoogleMapOptions mapToolbarEnabled(boolean enabled) {
7676
return this;
7777
}
7878

79+
public AirGoogleMapOptions setTouchEnabled(boolean enabled) {
80+
tiltGesturesEnabled(enabled);
81+
rotateGesturesEnabled(enabled);
82+
zoomGesturesEnabled(enabled);
83+
scrollGesturesEnabled(enabled);
84+
return this;
85+
}
86+
7987
public Boolean getZOrderOnTop() {
8088
return options.getZOrderOnTop();
8189
}

library/src/main/java/com/airbnb/android/airmapview/AirMapInterface.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,4 +188,10 @@ public interface AirMapInterface {
188188
* @param polyline the {@link Polyline} to remove
189189
*/
190190
void removePolyline(AirMapPolyline polyline);
191+
192+
/**
193+
* Set to whether to enable touch. If it's disabled then the user won't be allowed to drag, zoom or pan.
194+
* @param enabled
195+
*/
196+
void setTouchEnabled(boolean enabled);
191197
}

library/src/main/java/com/airbnb/android/airmapview/AirMapView.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,10 @@ public boolean addMarker(AirMapMarker marker) {
290290
return false;
291291
}
292292

293+
public void setTouchEnabled(boolean enabled) {
294+
mapInterface.setTouchEnabled(enabled);
295+
}
296+
293297
@Override public void onCameraChanged(LatLng latLng, int zoom) {
294298
if (onCameraChangeListener != null) {
295299
onCameraChangeListener.onCameraChanged(latLng, zoom);

library/src/main/java/com/airbnb/android/airmapview/NativeGoogleMapFragment.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public void onMapReady(GoogleMap googleMap) {
6363
if (onMapLoadedListener != null) {
6464
onMapLoadedListener.onMapLoaded();
6565
}
66+
6667
}
6768
}
6869
});
@@ -93,6 +94,10 @@ public void onInfoWindowClick(Marker marker) {
9394
});
9495
}
9596

97+
@Override public void setTouchEnabled(boolean enabled) {
98+
googleMap.getUiSettings().setAllGesturesEnabled(enabled);
99+
}
100+
96101
@Override public void setInfoWindowCreator(GoogleMap.InfoWindowAdapter adapter,
97102
InfoWindowCreator creator) {
98103
googleMap.setInfoWindowAdapter(adapter);

library/src/main/java/com/airbnb/android/airmapview/WebViewMapFragment.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,15 @@ public void setOnMarkerClickListener(OnMapMarkerClickListener listener) {
188188
// no-op
189189
}
190190

191+
@Override
192+
public void setTouchEnabled(boolean enabled) {
193+
if (enabled) {
194+
webView.loadUrl("javascript:setTouchEnabled(true);");
195+
} else {
196+
webView.loadUrl("javascript:setTouchEnabled(false);");
197+
}
198+
}
199+
191200
@Override public void addPolyline(AirMapPolyline polyline) {
192201
try {
193202
JSONArray array = new JSONArray();

sample/src/main/java/com/airbnb/airmapview/sample/MainActivity.java

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,9 @@
1010
import android.widget.TextView;
1111
import android.widget.Toast;
1212

13-
import com.airbnb.android.airmapview.AirMapInterface;
14-
import com.airbnb.android.airmapview.AirMapMarker;
15-
import com.airbnb.android.airmapview.AirMapView;
16-
import com.airbnb.android.airmapview.AirMapViewTypes;
17-
import com.airbnb.android.airmapview.DefaultAirMapViewBuilder;
18-
import com.airbnb.android.airmapview.listeners.OnCameraChangeListener;
19-
import com.airbnb.android.airmapview.listeners.OnCameraMoveListener;
20-
import com.airbnb.android.airmapview.listeners.OnLatLngScreenLocationCallback;
21-
import com.airbnb.android.airmapview.listeners.OnInfoWindowClickListener;
22-
import com.airbnb.android.airmapview.listeners.OnMapClickListener;
23-
import com.airbnb.android.airmapview.listeners.OnMapInitializedListener;
24-
import com.airbnb.android.airmapview.listeners.OnMapMarkerClickListener;
13+
import com.airbnb.android.airmapview.*;
14+
import com.airbnb.android.airmapview.listeners.*;
15+
import com.google.android.gms.maps.GoogleMapOptions;
2516
import com.google.android.gms.maps.model.LatLng;
2617
import com.google.android.gms.maps.model.Marker;
2718

@@ -75,6 +66,15 @@ public class MainActivity extends ActionBarActivity
7566
}
7667
} else if (id == R.id.action_web_map) {
7768
airMapInterface = mapViewBuilder.builder(AirMapViewTypes.WEB).build();
69+
} else if (id == R.id.action_web_map_no_touch || id == R.id.action_native_map_no_touch) {
70+
try {
71+
airMapInterface = createMapWithTouchDisabled(id == R.id.action_web_map_no_touch ? AirMapViewTypes.WEB : AirMapViewTypes.NATIVE);
72+
} catch (UnsupportedOperationException e) {
73+
Toast.makeText(this, "Sorry, native Google Maps are not supported by this device. " +
74+
"Please make sure you have Google Play Services installed.",
75+
Toast.LENGTH_SHORT).show();
76+
}
77+
7878
} else if (id == R.id.action_clear_logs) {
7979
textLogs.setText("");
8080
}
@@ -86,6 +86,25 @@ public class MainActivity extends ActionBarActivity
8686
return super.onOptionsItemSelected(item);
8787
}
8888

89+
private AirMapInterface createMapWithTouchDisabled(AirMapViewTypes type) {
90+
if (type == AirMapViewTypes.NATIVE) {
91+
AirGoogleMapOptions options = new AirGoogleMapOptions(new GoogleMapOptions());
92+
options.setTouchEnabled(false);
93+
AirMapInterface airMapInterface = mapViewBuilder.builder(type).withOptions(options).build();
94+
return airMapInterface;
95+
}
96+
97+
// case where it's not a native map, doesn't use AirGoogleMapOptions
98+
final AirMapInterface mapInterface = mapViewBuilder.builder(type).build();
99+
mapInterface.setOnMapLoadedListener(new OnMapLoadedListener() {
100+
@Override
101+
public void onMapLoaded() {
102+
mapInterface.setTouchEnabled(false);
103+
}
104+
});
105+
return mapInterface;
106+
}
107+
89108
@Override public void onCameraChanged(LatLng latLng, int zoom) {
90109
appendLog("Map onCameraChanged triggered with lat: " + latLng.latitude + ", lng: "
91110
+ latLng.longitude);

sample/src/main/res/menu/menu_main.xml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,28 @@
33
xmlns:tools="http://schemas.android.com/tools"
44
tools:context=".MainActivity">
55

6-
<item android:id="@+id/action_native_map"
7-
android:title="Use Native Map"
8-
android:orderInCategory="100"
9-
app:showAsAction="never"/>
6+
<item android:id="@+id/action_native_map"
7+
android:title="Use Native Map"
8+
android:orderInCategory="100"
9+
app:showAsAction="never"/>
1010

11-
<item android:id="@+id/action_web_map"
12-
android:title="Use Web Map"
13-
android:orderInCategory="100"
14-
app:showAsAction="never"/>
11+
<item android:id="@+id/action_web_map"
12+
android:title="Use Web Map"
13+
android:orderInCategory="100"
14+
app:showAsAction="never"/>
1515

16-
<item android:id="@+id/action_clear_logs"
17-
android:title="Clear logs"
18-
android:orderInCategory="100"
19-
app:showAsAction="never"/>
16+
<item android:id="@+id/action_web_map_no_touch"
17+
android:title="Use Web Map (Don't allow drag)"
18+
android:orderInCategory="100"
19+
app:showAsAction="never"/>
20+
21+
<item android:id="@+id/action_native_map_no_touch"
22+
android:title="Use Native Map (Don't allow drag)"
23+
android:orderInCategory="100"
24+
app:showAsAction="never"/>
25+
26+
<item android:id="@+id/action_clear_logs"
27+
android:title="Clear logs"
28+
android:orderInCategory="100"
29+
app:showAsAction="never"/>
2030
</menu>

0 commit comments

Comments
 (0)