Skip to content
This repository was archived by the owner on Jun 25, 2019. It is now read-only.

Commit 83b46ef

Browse files
committed
06-22-2018
Flutter * Added bearing and tilt for camera position. * cameraPositionChanged will now bring bearing and tilt in the returned object. Android * Added bearing and tilt when setting the camera for the map. * Added bearing and tilt to the returned map in the callback (cameraPositionChanged) when the camera is updated. iOS * Incomplete changes regarding camera position update.
1 parent 3111b8a commit 83b46ef

File tree

7 files changed

+34
-15
lines changed

7 files changed

+34
-15
lines changed

android/src/main/kotlin/com/apptreesoftware/mapview/MapActivity.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import android.os.Bundle
1010
import android.support.v4.app.ActivityCompat
1111
import android.support.v4.content.ContextCompat
1212
import android.support.v7.app.AppCompatActivity
13-
import android.util.Log
1413
import android.view.Menu
1514
import android.view.MenuItem
1615
import com.google.android.gms.maps.CameraUpdateFactory
@@ -134,9 +133,14 @@ class MapActivity : AppCompatActivity(),
134133
get() = googleMap?.cameraPosition?.target ?: LatLng(0.0,
135134
0.0)
136135

137-
fun setCamera(target: LatLng, zoom: Float) {
138-
googleMap?.animateCamera(
139-
CameraUpdateFactory.newLatLngZoom(target, zoom))
136+
fun setCamera(target: LatLng, zoom: Float, bearing: Float, tilt: Float) {
137+
val cameraPosition = CameraPosition.Builder()
138+
.target(target)
139+
.zoom(zoom)
140+
.bearing(bearing)
141+
.tilt(tilt)
142+
.build()
143+
googleMap?.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))
140144
}
141145

142146
fun setAnnotations(annotations: List<MapAnnotation>) {
@@ -411,7 +415,6 @@ class MapActivity : AppCompatActivity(),
411415
exception.printStackTrace()
412416
}
413417
}
414-
Log.d("Bitmap", "${bitmap}")
415418
if (bitmap != null) {
416419
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap))
417420
} else {

android/src/main/kotlin/com/apptreesoftware/mapview/MapViewPlugin.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,9 @@ class MapViewPlugin(val activity: Activity) : MethodCallHandler {
123123
this.channel.invokeMethod("cameraPositionChanged", mapOf(
124124
"latitude" to pos.target.latitude,
125125
"longitude" to pos.target.longitude,
126-
"zoom" to pos.zoom
126+
"zoom" to pos.zoom,
127+
"bearing" to pos.bearing,
128+
"tilt" to pos.tilt
127129
))
128130
}
129131

@@ -278,7 +280,9 @@ class MapViewPlugin(val activity: Activity) : MethodCallHandler {
278280
val lat = map["latitude"] as Double
279281
val lng = map["longitude"] as Double
280282
val zoom = map["zoom"] as Double
281-
mapActivity?.setCamera(LatLng(lat, lng), zoom.toFloat())
283+
val bearing = map["bearing"] as Double
284+
val tilt = map["tilt"] as Double
285+
mapActivity?.setCamera(LatLng(lat, lng), zoom.toFloat(), bearing.toFloat(), tilt.toFloat())
282286
}
283287

284288
fun handleZoomToAnnotations(map: Map<String, Any>) {

example/lib/main.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,13 @@ class _MyAppState extends State<MyApp> {
203203
mapView.zoomToFit(padding: 100);
204204
});
205205
compositeSubscription.add(sub);
206-
sub = mapView.onLocationUpdated
207-
.listen((location) => print("Location updated $location"));
206+
sub = mapView.onLocationUpdated.listen((location) {
207+
print("Location updated $location");
208+
mapView.setCameraPosition(new CameraPosition(
209+
new Location(location.latitude, location.longitude),
210+
18.0,
211+
));
212+
});
208213
compositeSubscription.add(sub);
209214
sub = mapView.onTouchAnnotation
210215
.listen((annotation) => print("annotation ${annotation.id} tapped"));

ios/Classes/MapViewController.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
cameraPosition:(GMSCameraPosition *)cameraPosition;
2222

2323
- (void)shutdown;
24-
- (void)setCamera:(CLLocationCoordinate2D)location zoom:(float)zoom;
24+
- (void)setCamera:(CLLocationCoordinate2D)location zoom:(float)zoom bearing:(CLLocationDirection)bearing tilt:(double)tilt;
2525

2626
- (void)updateAnnotations:(NSArray *)annotations;
2727
- (void)clearAnnotations;

ios/Classes/MapViewPlugin.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ - (void)cameraPositionChanged:(GMSCameraPosition *)position {
270270
[self.channel invokeMethod:@"cameraPositionChanged" arguments:@{
271271
@"latitude": @(position.target.latitude),
272272
@"longitude": @(position.target.longitude),
273+
@"bearing": @(position.bearing),
274+
@"tilt": @(position.viewingAngle),
273275
@"zoom": @(position.zoom)
274276
}];
275277
}

lib/camera_position.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@ import 'package:map_view/location.dart';
33
class CameraPosition {
44
final Location center;
55
final double zoom;
6+
final double bearing;
7+
final double tilt;
68

7-
const CameraPosition(this.center, this.zoom);
9+
const CameraPosition(this.center, this.zoom,
10+
{this.bearing = 0.0, this.tilt = 0.0});
811

912
factory CameraPosition.fromMap(Map map) {
10-
return new CameraPosition(new Location.fromMap(map), map["zoom"]);
13+
return new CameraPosition(new Location.fromMap(map), map["zoom"],
14+
bearing: map["bearing"], tilt: map["tilt"]);
1115
}
1216

1317
Map toMap() {
1418
Map map = center.toMap();
1519
map["zoom"] = zoom;
20+
map["bearing"] = bearing;
21+
map["tilt"] = tilt;
1622
return map;
1723
}
1824
}

lib/map_view.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,8 @@ class MapView {
191191
'zoomToPolygons', {"polygons": polygonsIds, "padding": padding});
192192
}
193193

194-
void setCameraPosition(double latitude, double longitude, double zoom) {
195-
_channel.invokeMethod("setCamera",
196-
{"latitude": latitude, "longitude": longitude, "zoom": zoom});
194+
void setCameraPosition(CameraPosition cameraPosition) {
195+
_channel.invokeMethod("setCamera", cameraPosition.toMap());
197196
}
198197

199198
Future<Location> get centerLocation async {

0 commit comments

Comments
 (0)