Google_Huawei Map -> AppMap
parent
32462ff5ba
commit
3f178e3e3f
@ -0,0 +1,14 @@
|
||||
{
|
||||
"client":{
|
||||
"appType":"1",
|
||||
"cp_id":"2640966000002322881",
|
||||
"product_id":"736430079244816567",
|
||||
"client_id":"563735388191982656",
|
||||
"client_secret":"650C7C799812AFFD53A10C7756CF05FB9F215A7E49032ABA8EBF3E14B77535CF",
|
||||
"project_id":"736430079244816567",
|
||||
"app_id":"102857389",
|
||||
"api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI",
|
||||
"package_name":"com.ejada.hmg"
|
||||
},
|
||||
"configuration_version":"1.0"
|
||||
}
|
||||
@ -0,0 +1,94 @@
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hms_gms_availability/flutter_hms_gms_availability.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
import 'package:huawei_map/map.dart' as hmsMap;
|
||||
|
||||
|
||||
class AppMap extends StatefulWidget{
|
||||
CameraPositionCallback onCameraMove;
|
||||
Map initialCamera;
|
||||
|
||||
AppMapState _state;
|
||||
|
||||
AppMap(this.initialCamera, {this.onCameraMove});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _state = AppMapState();
|
||||
|
||||
|
||||
moveTo({@required CameraPosition cameraPostion}){
|
||||
if(_state.isHuawei){
|
||||
final cameraJson = cameraPostion.toMap();
|
||||
final camera = hmsMap.CameraPosition.fromMap(cameraJson);
|
||||
_state._huaweiMapController.animateCamera(hmsMap.CameraUpdate.newCameraPosition(camera));
|
||||
}else{
|
||||
_state.googleMapController.animateCamera(CameraUpdate.newCameraPosition(cameraPostion));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AppMapState extends State<AppMap>{
|
||||
|
||||
bool isHuawei;
|
||||
|
||||
Completer<GoogleMapController> _googleMapControllerComp = Completer();
|
||||
GoogleMapController googleMapController;
|
||||
|
||||
Completer<hmsMap.HuaweiMapController> _huaweiMapControllerComp = Completer();
|
||||
hmsMap.HuaweiMapController _huaweiMapController;
|
||||
|
||||
checkIsHuawei() async{
|
||||
isHuawei = await FlutterHmsGmsAvailability.isHmsAvailable;
|
||||
setState(() {});
|
||||
}
|
||||
@override
|
||||
void initState() {
|
||||
checkIsHuawei();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if(isHuawei == null)
|
||||
return CircularProgressIndicator();
|
||||
return map();
|
||||
}
|
||||
|
||||
Widget map() => isHuawei ? huaweiMap() : googleMap();
|
||||
|
||||
|
||||
googleMap(){
|
||||
return
|
||||
GoogleMap(
|
||||
mapType: MapType.normal,
|
||||
zoomControlsEnabled: false,
|
||||
myLocationButtonEnabled: true,
|
||||
myLocationEnabled: true,
|
||||
initialCameraPosition: CameraPosition.fromMap(widget.initialCamera),
|
||||
onCameraMove: widget.onCameraMove,
|
||||
onMapCreated: (GoogleMapController controller) {
|
||||
googleMapController = controller;
|
||||
_googleMapControllerComp.complete(controller);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget huaweiMap(){
|
||||
return hmsMap.HuaweiMap(
|
||||
mapType: hmsMap.MapType.normal,
|
||||
zoomControlsEnabled: false,
|
||||
myLocationButtonEnabled: true,
|
||||
myLocationEnabled: true,
|
||||
initialCameraPosition: hmsMap.CameraPosition.fromMap(widget.initialCamera),
|
||||
onCameraMove: (camera) => widget.onCameraMove(CameraPosition.fromMap(camera.toMap())),
|
||||
onMapCreated: (controller){
|
||||
_huaweiMapController = controller;
|
||||
_huaweiMapControllerComp .complete(controller);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue