A Flutter plugin that provides an Apple Maps widget.
The plugin relies on Flutter's mechanism for embedding Android and iOS views. As that mechanism is currently in a developers preview, this plugin should also be considered a developers preview.
This plugin was based on the google_maps_flutter plugin. Instead of reinventing the wheel it also uses the Flutter implementation of the google_maps_flutter plugin. This was also done to simplify the process of combining the google_maps_flutter plugin with apple_maps_flutter to create a cross platform implementation for Android/iOS called flutter_platform_maps.
| Example 1 | Example 2 |
|---|---|
![]() | ![]() |
To use this plugin on iOS you need to opt-in for the embedded views preview by adding a boolean property to the app's Info.plist file, with the key io.flutter.embedded_views_preview and the value YES. You will also have to add the key Privacy - Location When In Use Usage Description with the value of your usage description.
There is no Android implementation, but there is a package combining apple_maps_flutter and the google_maps_flutter plugin to have the typical map implementations for Android/iOS called platform_maps_flutter.
classAppleMapsExampleextendsStatelessWidget {
AppleMapController mapController;
void_onMapCreated(AppleMapController controller) {
mapController = controller;
}
@overrideWidgetbuild(BuildContext context) {
returnColumn(
mainAxisAlignment:MainAxisAlignment.spaceEvenly,
crossAxisAlignment:CrossAxisAlignment.stretch,
children:<Widget>[
Expanded(
child:Container(
child:AppleMap(
onMapCreated: _onMapCreated,
initialCameraPosition:constCameraPosition(
target:LatLng(0.0, 0.0),
),
),
),
),
Row(
mainAxisAlignment:MainAxisAlignment.spaceEvenly,
children:<Widget>[
Column(
children:<Widget>[
FlatButton(
onPressed: () {
mapController.moveCamera(
CameraUpdate.newCameraPosition(
constCameraPosition(
heading:270.0,
target:LatLng(51.5160895, -0.1294527),
pitch:30.0,
zoom:17,
),
),
);
},
child:constText('newCameraPosition'),
),
FlatButton(
onPressed: () {
mapController.moveCamera(
CameraUpdate.newLatLngZoom(
constLatLng(37.4231613, -122.087159),
11.0,
),
);
},
child:constText('newLatLngZoom'),
),
],
),
Column(
children:<Widget>[
FlatButton(
onPressed: () {
mapController.moveCamera(
CameraUpdate.zoomIn(),
);
},
child:constText('zoomIn'),
),
FlatButton(
onPressed: () {
mapController.moveCamera(
CameraUpdate.zoomOut(),
);
},
child:constText('zoomOut'),
),
FlatButton(
onPressed: () {
mapController.moveCamera(
CameraUpdate.zoomTo(16.0),
);
},
child:constText('zoomTo'),
),
],
),
],
)
],
);
}
}Suggestions and PR's to make this plugin better are always welcome.

