如果您使用google_maps_flutter 包,您可以使用自己的图像创建自定义标记,方法是使用BitmapDescriptor 作为您的图标。首先,您需要在pubspec.yaml 的flutter: 部分下定义您的资产/图像:
flutter:
# To add assets to your application, add an assets section, like this:
assets:
- assets/images/
然后,定义一个BitmapDescriptor 变量以在地图加载之前将您的图标存储在main.dart 上,如下所示:
// Custom marker icon
BitmapDescriptor icon;
// List for storing markers
List<Marker> allMarkers = [];
@override
void initState() {
super.initState();
BitmapDescriptor.fromAssetImage(
ImageConfiguration(), 'assets/images/icon.png')
.then((value) => icon = value);
}
最后,您可以使用setState 在onMapCreated 方法下的GoogleMap 小部件上添加带有自定义图标的标记:
GoogleMap(
initialCameraPosition: _initialLocation,
mapType: MapType.normal,
markers: Set.from(allMarkers),
onMapCreated: (GoogleMapController controller) {
mapController = controller;
setState(() {
// add marker
allMarkers.add(Marker(
markerId: MarkerId('Google'),
draggable: false,
icon: icon,
position: LatLng(37.422066,-122.08409)));
});
},
),
编辑:
您还可以使用http package 从 URL 加载图像,然后将响应传递给BitmapDescriptor.fromBytes(bytes);:
final Response response = await get("imageUrl");
icon = await BitmapDescriptor.fromBytes(response.bodyBytes);