Flutter地图展示插件flutter_open_street_map的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter 地图展示插件 flutter_open_street_map 的使用

特性

  • 从地图上选择位置
  • 按地点搜索位置
  • 使用简单

目标

此库旨在为所有平台的 Flutter 应用程序使用开源地图设置位置。

开始使用

在 Dart 文件中导入以下包:

import 'package:flutter_open_street_map/open_street_map.dart';

使用方法非常简单,只需调用以下组件。你需要传递默认的地图中心位置,并且需要一个 onPicked 方法来获取从地图上选择的位置。

FlutterOpenStreetMap(
  center: LatLong(23, 89),
  onPicked: (pickedData) {
  }
)

进一步使用

现在,如果你按下 “Set Location” 按钮,你将通过 onPicked 方法获得所选位置。

onPicked 方法中,你会收到 pickedData

pickedData 包含两个属性:

  1. latLong
  2. address

latLong 包含两个属性:

  1. latitude
  2. longitude

例如:

FlutterOpenStreetMap(
  center: LatLong(23, 89),
  onPicked: (pickedData) {
     print(pickedData.latLong.latitude);
     print(pickedData.latLong.longitude);
     print(pickedData.address);
  }
)

你可以通过这种方式获取纬度、经度和地址。

完整示例

import 'package:flutter/material.dart';
import 'package:flutter_open_street_map/open_street_map.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: FlutterOpenStreetMap(
        buttonText: "Set Location",
        locationIconColor: Colors.blue,
        buttonForegroundColor: Colors.white,
        buttonTextStyle: TextStyle(fontSize: 20),
        center: LatLong(5, 10),
        onPicked: (pickedData) {
          print(pickedData.latLong.latitude);
          print(pickedData.latLong.longitude);
          print(pickedData.addressName);
          print(pickedData.address);
        },
      ),
    );
  }
}

更多关于Flutter地图展示插件flutter_open_street_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter地图展示插件flutter_open_street_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter应用中使用flutter_open_street_map插件来展示地图的示例代码。这个插件允许你使用OpenStreetMap的瓦片服务来显示地图。

首先,确保你已经在pubspec.yaml文件中添加了flutter_open_street_map依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_open_street_map: ^0.13.0  # 请检查最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中按照以下步骤使用flutter_open_street_map插件:

  1. 导入插件

在你的Dart文件中导入flutter_open_street_map包:

import 'package:flutter_open_street_map/flutter_open_street_map.dart';
  1. 创建地图视图

使用OSMFlutterMap小部件来创建地图视图。以下是一个简单的示例,展示了如何在Scaffold中嵌入地图:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter OpenStreetMap Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter OpenStreetMap Demo'),
      ),
      body: OSMFlutterMap(
        // 初始化地图中心点和缩放级别
        mapController: MapController(
          initialPosition: LatLng(48.8566, 2.3522), // 巴黎的经纬度
          zoom: 12.0,
        ),
        // 可选:添加标记
        markers: <Marker>[
          Marker(
            widget: MarkerWidget(
              child: Container(
                child: Icon(Icons.location_on, color: Colors.red,),
              ),
              anchor: MarkerAnchor.bottom,
            ),
            point: LatLng(48.8566, 2.3522), // 巴黎的经纬度
          ),
        ],
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个OSMFlutterMap小部件,该小部件显示了巴黎的地图,并在巴黎的位置上添加了一个标记。

  • OSMFlutterMap小部件接受一个MapController对象,用于初始化地图的中心位置(initialPosition)和缩放级别(zoom)。
  • markers属性允许你添加标记到地图上。每个Marker对象都需要一个widget(表示标记的UI)和一个point(表示标记的位置)。

这个示例应该可以帮助你快速上手在Flutter应用中使用flutter_open_street_map插件来展示地图。如果你需要更多高级功能,比如处理地图事件、自定义标记等,请参考插件的官方文档。

回到顶部