百度地图,拖动地图,定位marker固定在屏幕中心位置

本文介绍如何在百度地图中实现拖动地图时,marker始终保持在屏幕中心位置的效果,通过CSS定位实现,但需注意浏览器窗口尺寸变化时的适配问题。
摘要由CSDN通过智能技术生成

注:高德地图相同效果官方demo

以下为百度地图相关效果图:

注:该例子主要思路是将覆盖物(marker)通过css定位上去的,但是存在一个问题,当浏览器窗口宽度改变时,覆盖物会自动定位到地图中心位置,但是地图可能不会。

图片描述

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>map</title>
    <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=你的api key"></script>
    <style type="text/css">
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用百度地图Flutter插件来将所有的标记(marker)显示在屏幕内。首先,你需要在Flutter项目中引入百度地图插件,可以在`pubspec.yaml`文件中添加如下依赖: ``` dependencies: flutter_baidu_map: ^x.x.x ``` 然后运行`flutter packages get`命令来获取插件。接下来,你可以在需要显示地图的页面中使用`BaiduMap`组件。在此组件中,你可以设置地图中心点和缩放级别。 为了将所有的标记显示在屏幕内,你需要先获取所有标记的经纬度坐标。然后,使用`BaiduMapController`提供的`setViewport`方法来调整地图的视野范围,使得所有标记都能显示在屏幕内。示例代码如下: ```dart import 'package:flutter_baidu_map/flutter_baidu_map.dart'; class MapScreen extends StatefulWidget { @override _MapScreenState createState() => _MapScreenState(); } class _MapScreenState extends State<MapScreen> { BaiduMapController _mapController; List<LatLng> _markerCoordinates = [ LatLng(39.909187, 116.397451), // 假设有多个标记 LatLng(39.908724, 116.397456), LatLng(39.907372, 116.397951), // ... ]; @override Widget build(BuildContext context) { return Scaffold( body: BaiduMap( onCreated: (controller) { _mapController = controller; _adjustViewport(); // 在地图创建后调整视野范围 }, ), ); } void _adjustViewport() { if (_mapController != null && _markerCoordinates.isNotEmpty) { double minLat = _markerCoordinates[0].latitude; double maxLat = _markerCoordinates[0].latitude; double minLng = _markerCoordinates[0].longitude; double maxLng = _markerCoordinates[0].longitude; // 计算标记的最小和最大经纬度 for (LatLng coordinate in _markerCoordinates) { minLat = min(minLat, coordinate.latitude); maxLat = max(maxLat, coordinate.latitude); minLng = min(minLng, coordinate.longitude); maxLng = max(maxLng, coordinate.longitude); } // 调整地图视野范围 LatLngBounds bounds = LatLngBounds( southwest: LatLng(minLat, minLng), northeast: LatLng(maxLat, maxLng), ); _mapController.setViewport(bounds); } } } ``` 这样,地图将会自动调整视野,使得所有的标记都能显示在屏幕内。你可以根据需要修改标记的经纬度坐标和其他地图的参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值