如何使拍打着的Google地图中的标记通过相机而不是地图移动

时间:2019-02-05 22:29:06

标签: google-maps flutter

我观看了video,其中位置标记随相机一起移动并且没有固定在地图上。我不确定这是否是Google扑扑的官方地图,但是这是如何实现的。

我尝试将控制器的摄像机位置传递到标记器,但是没有用,因为我不确定标记器位置是否随摄像机的移动而更新。

 mapController.addMarker(MarkerOptions(
      icon: BitmapDescriptor.fromAsset("assets/images/marker.png"),
      position: LatLng(mapController.cameraPosition.target.latitude,mapController.cameraPosition.target.longitude),
      infoWindowText: InfoWindowText("Pick up location", "Pick up location")
    ));

3 个答案:

答案 0 :(得分:1)

您可以使用这些属性进行操作。

sb-sys:*tty*

答案 1 :(得分:1)

您可以通过在每次相机移动时创建一个新标记但提供相同标记 ID 来实现。实际上,它不会创建新标记,但会根据相机位置开始移动相同的标记。 您可以这样做:

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

class YourMapView extends StatefulWidget {
  @override
  _YourMapViewState createState() => _YourMapViewState();
}

class _YourMapViewState extends State<YourMapView> {
  final markers = Set<Marker>();
  MarkerId markerId = MarkerId("YOUR-MARKER-ID");
  LatLng latLng = LatLng(43.2994, 74.2179);

  @override
  void initState() {
    markers.add(
      Marker(
        markerId: markerId,
        position: latLng,
      ),
    );
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return GoogleMap(
      initialCameraPosition: CameraPosition(target: latLng,zoom: 14.34),
      markers: markers,
      onCameraMove: (position){
        setState(() {
          markers.add(Marker(markerId: markerId,position: position.target));
        });
      },
    );
  }
}

答案 2 :(得分:0)

如果您只希望标记用于视觉目的,则可以在始终居中的地图上放置一个“假”标记,并获取摄像头位置以获取实际的摄像头坐标。

另一种方法是在“ CameraMove”上更新标记,标记不会每次都居于中心,并且会变得很呆板。