Skip to content

Commit faa8279

Browse files
committed
tmp commit.
1 parent 4197bf5 commit faa8279

8 files changed

Lines changed: 79 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: 21 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,14 @@ public class MainActivity extends ActionBarActivity
8686
return super.onOptionsItemSelected(item);
8787
}
8888

89+
private AirMapInterface createMapWithTouchDisabled(AirMapViewTypes type) {
90+
AirGoogleMapOptions options = new AirGoogleMapOptions(new GoogleMapOptions());
91+
// options.setTouchEnabled(false);
92+
93+
AirMapInterface airMapInterface = mapViewBuilder.builder(type).withOptions(options).build();
94+
return airMapInterface;
95+
}
96+
8997
@Override public void onCameraChanged(LatLng latLng, int zoom) {
9098
appendLog("Map onCameraChanged triggered with lat: " + latLng.latitude + ", lng: "
9199
+ latLng.longitude);
@@ -98,6 +106,7 @@ public class MainActivity extends ActionBarActivity
98106
addMarker("Performance Bikes", new LatLng(37.773975, -122.40205), 2);
99107
addMarker("REI", new LatLng(37.772127, -122.404411), 3);
100108
map.animateCenterZoom(airbnbLatLng, 10);
109+
map.setTouchEnabled(false);
101110
}
102111

103112
private void addMarker(String title, LatLng latLng, int id) {

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)