Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 如何让flatter谷歌地图中的标记使用相机而不是地图移动_Google Maps_Flutter - Fatal编程技术网

Google maps 如何让flatter谷歌地图中的标记使用相机而不是地图移动

Google maps 如何让flatter谷歌地图中的标记使用相机而不是地图移动,google-maps,flutter,Google Maps,Flutter,我看了一部电影,电影中的位置标记随着摄像机移动,没有粘在地图上。我不确定这是否是官方的谷歌地图,但如果这是如何实现的 我尝试将控制器摄影机位置传递给标记器,但没有成功,因为我不确定标记器位置是否随摄影机移动而更新 mapController.addMarker(MarkerOptions( icon: BitmapDescriptor.fromAsset("assets/images/marker.png"), position: LatLng(mapControlle

我看了一部电影,电影中的位置标记随着摄像机移动,没有粘在地图上。我不确定这是否是官方的谷歌地图,但如果这是如何实现的

我尝试将控制器摄影机位置传递给标记器,但没有成功,因为我不确定标记器位置是否随摄影机移动而更新

 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")
    ));

您可以使用这些属性来执行此操作

onCameraMove: ,
onCameraIdle: ,
onCameraMoveStarted: 

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

onCameraMove: ,
onCameraIdle: ,
onCameraMoveStarted: 

如果您希望标记仅用于视觉目的,可以在地图顶部放置一个始终居中的“假”标记,并获取相机位置以获取实际相机坐标


另一种方法是在摄影机移动时更新标记,标记不会每次都在中心,它会抖动。

如果您希望标记仅用于视觉目的,可以在始终居中的地图顶部放置一个“假”标记,并获取摄影机位置以获得实际的摄影机坐标


另一种方法是在相机移动时更新标记。标记不会每次都在中心,它会抖动。

您可以在相机每次移动时创建一个新标记,但提供相同的标记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));
        });
      },
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
类YourMapView扩展StatefulWidget{
@凌驾
_YourMapViewState createState();
}
类_YourMapViewState扩展状态{
最终标记=集合();
MarkerId MarkerId=MarkerId(“您的-MARKER-ID”);
LatLng LatLng=LatLng(43.2994,74.2179);
@凌驾
void initState(){
markers.add(
标记(
马克里德:马克里德,
位置:latLng,
),
);
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回谷歌地图(
初始CameraPosition:CameraPosition(目标:latLng,缩放:14.34),
标记:标记,
onCameraMove:(位置){
设置状态(){
markers.add(Marker(markerId:markerId,position:position.target));
});
},
);
}
}

您可以在每次相机移动时创建一个新标记,但提供相同的标记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));
        });
      },
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
类YourMapView扩展StatefulWidget{
@凌驾
_YourMapViewState createState();
}
类_YourMapViewState扩展状态{
最终标记=集合();
MarkerId MarkerId=MarkerId(“您的-MARKER-ID”);
LatLng LatLng=LatLng(43.2994,74.2179);
@凌驾
void initState(){
markers.add(
标记(
马克里德:马克里德,
位置:latLng,
),
);
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回谷歌地图(
初始CameraPosition:CameraPosition(目标:latLng,缩放:14.34),
标记:标记,
onCameraMove:(位置){
设置状态(){
markers.add(Marker(markerId:markerId,position:position.target));
});
},
);
}
}

如何才能使移动过程更加顺畅。当它被牵引时,它会猛拉很多。如何才能使移动过程更平稳。当时它在被拖的时候会猛拉