Flutter周边服务搜索插件mappls_nearby_plugin的使用

Flutter周边服务搜索插件mappls_nearby_plugin的使用

<Mappls-b-logo.svg>

Mappls附近小部件

Mappls附近的Flutter小部件使在您的Flutter应用中集成搜索附近POI(兴趣点)的功能变得简单。它提供了通过Mappls地图进行径向搜索附近地点的功能。 该小部件提供了以下基本功能:

  • 直接使用Mappls地图可视化界面搜索附近地点的能力。
  • 一个方法可以跨所有Mappls可用的地点类别发起附近搜索。
  • 能够通过回调从Mappls附近搜索小部件获取信息。

可以通过以下简单步骤完成这些功能。

开始使用

要在flutter中使用Mappls附近小部件,请在项目的pubspec.yaml文件中添加以下依赖项:

dependencies:
  mappls_nearby_plugin: ^1.0.0

现在,在您的dart代码中导入此包:

import 'package:mappls_nearby_plugin/mappls_nearby_plugin.dart';

添加Mappls密钥

您必须通过MapplsAccountManager类提供您的密钥。(点击这里

使用附近小部件

使用openNearbyWidget方法打开附近小部件:

// 平台消息可能会失败,所以我们使用try/catch来捕获PlatformException。
try {
  NearbyResult nearbyResult = await openNearbyWidget();
} on PlatformException {
  
}

完整示例代码

以下是完整的示例代码,展示了如何使用mappls_nearby_plugin插件。

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mappls_nearby_plugin/mappls_nearby_plugin.dart';

void main() {
  runApp(MaterialApp(
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  static const String MAP_SDK_KEY = "您的MAP SDK密钥";
  static const String REST_API_KEY = "您的REST API密钥";
  static const String ATLAS_CLIENT_ID = "您的ATLAS客户端ID";
  static const String ATLAS_CLIENT_SECRET = "您的ATLAS客户端密钥";
  NearbyResult? _nearbyResult;

  [@override](/user/override)
  void initState() {
    super.initState();
    MapplsAccountManager.setMapSDKKey(MAP_SDK_KEY);
    MapplsAccountManager.setRestAPIKey(REST_API_KEY);
    MapplsAccountManager.setAtlasClientId(ATLAS_CLIENT_ID);
    MapplsAccountManager.setAtlasClientSecret(ATLAS_CLIENT_SECRET);
    _nearbyResult = NearbyResult();
  }

  void openMapplsNearbyWidget() async {
    NearbyResult nearbyResult;

    // 平台消息可能会失败,所以我们使用try/catch来捕获PlatformException。
    try {
      nearbyResult = await openNearbyWidget(nearbyUIOption: NearbyUIOption(categoryIconColor: "#FF0000"));
    } on PlatformException {
      nearbyResult = NearbyResult();
    }
    print(json.encode(nearbyResult.toJson()));

    // 如果在异步平台消息飞行时小部件已从树中移除,则我们想要丢弃回复而不是调用setState以更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _nearbyResult = nearbyResult;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Nearby Plugin example'),
        ),
        body: Center(
          child: Column(
            children: [
              SizedBox(height: 20),
              Text(_nearbyResult?.distance == null ? '距离: ' : '距离: ${_nearbyResult?.distance}'),
              SizedBox(height: 20),
              Text(_nearbyResult?.mapplsPin == null ? '位置: ' : '位置: ${_nearbyResult?.mapplsPin}'),
              SizedBox(height: 20),
              Text(_nearbyResult?.placeName == null ? '地点名称: ' : '地点名称: ${_nearbyResult?.placeName}'),
              SizedBox(height: 20),
              Text(_nearbyResult?.placeAddress == null ? '地点地址: ' : '地点地址: ${_nearbyResult?.placeAddress}'),
              SizedBox(height: 20),
              Text(_nearbyResult?.orderIndex == null ? '索引: ' : '索引: ${_nearbyResult?.orderIndex}'),
              SizedBox(height: 20),
              TextButton(
                child: Text('打开附近搜索小部件'),
                onPressed: () => openMapplsNearbyWidget(),
              )
            ]
          )
        )
      ),
    );
  }
}

更多关于Flutter周边服务搜索插件mappls_nearby_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter周边服务搜索插件mappls_nearby_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


mappls_nearby_plugin 是一个用于在 Flutter 应用中集成 Mappls Nearby Search 功能的插件。Mappls(以前称为 MapmyIndia)是一个提供地图、位置和地理空间服务的平台。mappls_nearby_plugin 允许开发者轻松地在应用中实现附近地点搜索功能,例如搜索附近的餐馆、ATM、加油站等。

以下是使用 mappls_nearby_plugin 的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 mappls_nearby_plugin 依赖:

dependencies:
  flutter:
    sdk: flutter
  mappls_nearby_plugin: ^1.0.0  # 请使用最新版本

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

2. 获取 Mappls API Key

在使用 mappls_nearby_plugin 之前,你需要从 Mappls 获取一个 API Key。你可以在 Mappls 官网注册并创建一个项目来获取 API Key。

3. 初始化插件

在你的 Flutter 应用启动时,初始化 mappls_nearby_plugin 并设置你的 API Key:

import 'package:mappls_nearby_plugin/mappls_nearby_plugin.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Mappls Nearby 插件
  MapplsNearbyPlugin.setApiKey("YOUR_MAPPLS_API_KEY");
  
  runApp(MyApp());
}

4. 使用 Nearby Search 功能

你可以使用 MapplsNearbyPlugin 提供的 searchNearby 方法来搜索附近的 POI(Points of Interest)。

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

class NearbySearchScreen extends StatefulWidget {
  [@override](/user/override)
  _NearbySearchScreenState createState() => _NearbySearchScreenState();
}

class _NearbySearchScreenState extends State<NearbySearchScreen> {
  List<NearbyResult> _results = [];

  Future<void> _searchNearby() async {
    try {
      // 设置搜索参数
      NearbySearchRequest request = NearbySearchRequest(
        location: "28.123456,77.123456",  // 搜索的中心点坐标
        radius: 1000,  // 搜索半径(米)
        keyword: "restaurant",  // 搜索关键字
      );

      // 发起搜索请求
      NearbySearchResponse response = await MapplsNearbyPlugin.searchNearby(request);

      // 更新搜索结果
      setState(() {
        _results = response.results;
      });
    } catch (e) {
      print("Error searching nearby: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Nearby Search"),
      ),
      body: Column(
        children: [
          ElevatedButton(
            onPressed: _searchNearby,
            child: Text("Search Nearby"),
          ),
          Expanded(
            child: ListView.builder(
              itemCount: _results.length,
              itemBuilder: (context, index) {
                NearbyResult result = _results[index];
                return ListTile(
                  title: Text(result.name ?? 'Unknown'),
                  subtitle: Text(result.address ?? 'No address'),
                );
              },
            ),
          ),
        ],
      ),
    );
  }
}
回到顶部