如何将 Google 地图库与 Flutter Web 结合使用? [关闭]

2023-11-21

我正在将一个 flutter 移动项目移植到 flutter web,并且想知道如何将 google 地图库与 Flutter Web 一起使用。


请看另一个答案。它比这个更容易!

我能够得到一个可行的解决方案,但它并不漂亮。下面是实现。如果我有时间并且合法的端口不会出现很长时间,我将发布一个示例存储库。

import 'dart:html';

import 'package:flutter_web/material.dart';
import 'package:lift_ai/base/screen_state.dart';
import 'package:lift_ai/feature/property_common/property_contract.dart';
import 'package:lift_ai/feature/property_common/property_presenter_impl.dart';
import 'package:lift_ai/model/car_status.dart';
import 'package:lift_ai/model/property.dart';
import 'package:flutter_web_ui/ui.dart' as ui;
import 'package:lift_ai/util/widget_util.dart';


class PropertyMapPage extends StatefulWidget {
  final CarStatus carStatus;

  PropertyMapPage(Key key, this.carStatus) : super(key: key);

  @override
  _PropertyMapPageState createState() => _PropertyMapPageState(carStatus);
}

class _PropertyMapPageState extends State<PropertyMapPage>
    implements PropertyListView {
  PropertyPresenter _propertyListPresenter;
  List<Property> properties = [];
  CarStatus carStatus;
  String createdViewId = 'hello-world-html';
  bool inProgress = true;

  _PropertyMapPageState(this.carStatus) {
    _propertyListPresenter = PropertyPresenterImpl(this);
  }

  @override
  void initState() {
    super.initState();
    _propertyListPresenter.getProperties(carStatus, "");
  }

  @override
  void dispose() {
    super.dispose();
    _propertyListPresenter = null;
  }

  @override
  Widget build(BuildContext context) {
    print("Creating html view");

    if (inProgress) {
      return Center(child: CircularProgressIndicator());
    }

    return Row(
      children: <Widget>[
        Container(
            width: MediaQuery.of(context).size.width - 400,
            child: HtmlView(
              viewType: createdViewId,
            )),
        Container(
          width: 400,
          child: properties.isEmpty
              ? WidgetUtil.getEmptyPropertiesView(context)
              : ListView.builder(
                  padding: EdgeInsets.all(8.0),
                  itemCount: properties.length,
                  itemBuilder: (_, index) {
                    return WidgetUtil.buildListRow(
                        context, _propertyListPresenter, properties[index]);
                  },
                ),
        ),
      ],
    );
  }

  @override
  void showProperties(List<Property> properties) {
    String markers = "";

    for (Property property in properties) {
      String marker =
          "var marker = new google.maps.Marker({position: new google.maps.LatLng(${property.lat}, ${property.lng}), map: map, title: 'Hello ${property.id}!'});\n";
      markers += marker;
    }

    String createdViewUpdate = DateTime.now().toString();

    rootBundle.loadString('map.html').then((value) {
      value = value.replaceAll(new RegExp(r'markers'), markers);

      ui.platformViewRegistry.registerViewFactory(
          createdViewId,
          (int viewId) => IFrameElement()
            ..width = (MediaQuery.of(context).size.width - 400).toString()
            ..height = MediaQuery.of(context).size.height.toString()
            ..srcdoc = value
            ..style.border = 'none');
    });

    setState(() {
      inProgress = false;
      this.createdViewId = createdViewUpdate;
      this.properties = properties;
    });
  }

  @override
  void updateScreenState(ScreenState screenState) { }

  @override
  void showException(String string) {
    // TODO: implement showException
  }
}

map.html

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple Markers</title>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
</head>
<body>
<div id="map"></div>
<script>

      function initMap() {
        var myLatLng = {lat: 41.850033, lng: -87.6500523};

        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: myLatLng
        });

        markers

      }
    </script>
<script async defer
        src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initMap">
</script>
</body>
</html>

enter image description here

下面 @panavtec 概述的答案也有效,并且可能有更简单的 api 工作!

他的解决方案的示例存储库位于此处:

https://github.com/dazza5000/flutter_web_google_maps_example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Google 地图库与 Flutter Web 结合使用? [关闭] 的相关文章

  • Google Geolocation API - 使用经度和纬度获取文本框中的地址?

    我注意到很多关于如何使用基于 IP 地址的 Google 地理定位查找您的位置的信息 但我想知道是否以及如何使用此服务来输入位置 经度和纬度 并获取当前地址 或至少是一个城市 州 我想用 C 来完成此操作 但我可以使用任何语言 有什么建议吗
  • 修复了 Google 地图混搭中的图例

    我有一个带有 Google 地图混搭的页面 其中的图钉按日期 周一 周二等 进行颜色编码 包含地图的 IFrame 是动态调整大小的 因此当浏览器窗口调整大小时 它也会调整大小 我想在地图窗口的一角放置一个图例 告诉用户每种颜色的含义 Go
  • Google 地图 API 标记图标 URL?

    我正在尝试将标记图标更改为 红圈 或 红针 或其他任何内容 在这些代码中 markerOptions icon images beachflag png 标记不显示 但如果我做icon一行注释行 因此标记显示为 red pin icon 所
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 在单页应用程序上重用 Google Maps API 实例

    假设我有一个单页应用程序 Angular JS 应用程序 并且我在元素 id 上绘制一个 Google 地图实例googleMap var mapInstance new google maps Map document getElemen
  • NoSuchMethodError:尝试调用非函数,例如 null:'dart.global.firebase.auth'

    Flutter 新手 我怀疑在尝试设置 Firebase Auth 时错过了一些非常简单的事情 一直在网上寻找解决方案 大多数人要求您仔细检查 firebase auth js 是否正确包含在 index html 文件中 这样就完成了 下
  • android-如何在谷歌地图上将标记的位置显示为地址

    我已经尝试过 commonsware googlemapsv2 教程 特别是在地图上拖动标记 但现在另一个问题困扰着我 问题是如何将标记的当前位置显示为地图下方或上方的地址 字符串 这是我使用的代码 public class MainAct
  • 如何在 Android Google 地图 v2 中创建带有传感器方位的位置箭头标记?

    我已经成功创建了一个箭头ImageView并从传感器获取方位角 之后我旋转ImageView using setRotation 的方法View班级 如何使用 Android Google Maps v2 标记对标记执行此操作 我建议你看一
  • Google 地图 API v2 灰屏

    我正在尝试创建与谷歌地图连接的应用程序 但是当屏幕加载时 地图应该是灰色的 我该如何解决 来自我的 logcat 的重要消息 06 11 03 32 55 196 E Google Maps Android API 11671 Ensure
  • 平滑 GPS 跟踪的路线坐标

    我有一些记录的坐标数据 不幸的是 他们似乎不太好 他们有时会跳过地图 所以现在我正在寻找一些扁平化或过滤算法 使路线看起来更真实 目前 我唯一的过滤器是计算一秒钟内 公交车 汽车或步行 行驶的最大可能米数 并将它们与坐标进行比较 扔掉那些在
  • 在对话框中第二次渲染时渲染 Google 地图时出现问题

    我有一个我构建的网站 90 是 jQuery 和 ajax 所以我想通过单击按钮来渲染不同的地图和方向 而无需刷新页面 第一次渲染时一切正常 如下图所示 但是当我重新加载或更改为不同的时 我得到这个 我认为它仍在用点渲染地图 只是画布是不正
  • GeoDjango,PointField 与 Google Maps V3 API 接口使用什么 SRID?

    我有点困惑 我应该在 GeoDjango PointField 中将 SRID 值设置为多少 以便在通过 google 地图 api 将地址地理编码为通过 django postgis 查询的坐标和距离的情况下保持准确 我在阅读网络上的帖子
  • Google 地图中的航点代码

    我正在使用 html 表单获取 3 个邮政编码 PortZip ImporterZip ExporterZip 的输入
  • IONIC 2 Google 地图标记点击事件

    我正在尝试使用此代码从数据库中获取所有标记 但问题是 当我单击标记时 我总是从数据库中获取最后一项 当 alert record id 弹出窗口始终显示每个标记的最后一个项目 我想在单击每个标记时显示它们的 id loadMarker th
  • React-native-maps 限制平移区域

    有没有办法将地图限制在特定区域 以便平移和缩放包含在该区域内 而外部的所有内容都被锁定 我想限制用户可以在地图上看到的区域 我通过react native maps使用谷歌地图https github com react community
  • 在android中获取谷歌地图中的地名

    我有一个要求 每当我拖动 浏览 Google 地图并在其上放置标记时 它都应该在 AutocompleteTextview 中显示地点名称 放置标记的位置 我已经检查了 Places API 和 Geocoder 类 但我最不理解它 我需要
  • Google Maps API - 按关键字(城市名称)定位/中心

    在我的网络应用程序中 我使用 gmap javascript API https developers google com maps documentation javascript https developers google com
  • 如何在 React 组件中处理 script.src URL 回调?

    我似乎无法弄清楚如何根据 google 的脚本 GET 请求触发函数 export class Map extends Component constructor props super props this state component
  • 如何创建环境变量来保护我的网站的 Google 地图 API 密钥(或任何其他秘密值)?

    我正在学习使用 Bootstrap 编写自己的网站 并使用 Google 地图 API 密钥和 Google Developers 的脚本轻松地将地图放置在我的页面上 理想情况下 我会有类似的东西 即我已经尝试过这个 Html PHP

随机推荐

  • Qt findChild 返回 0

    我目前正在研究一种使用 GUI 在运行时修改对象内容的好方法 项目使用 Qt 所以我想到了通过QLayout到对象 让他们创建自己的 GUI 作为 POC 我创建了这个 display 是QVBoxLayout 范围 QPushButton
  • 想要在 iframe 未加载或已加载时调用函数吗?

    我有一个iframe在我的页面中 如果iframe无法加载 希望加载alert消息 找不到pdf 如果iframe确实加载 应该alert pdf打开 有谁知道如何实现这一目标 因此 我们的想法是使用 Ajax 请求来 测试 URL Aja
  • 如何在 Watir 中获取 HTML 中具有相同属性的元素的数量?

    我有一个 HTML 文档 其中包含具有相同类名的元素 我可以对页面中的所有元素进行迭代 并将具有类名的元素存储在列表中 Watir 有没有更好的方法来获取具有相同类名的所有 HTML 元素的计数 这个问题XML 中具有相同属性的元素计数有点
  • 如何在方法中传输 Java List (Varargs) 的值?

    我有以下方法 public static List a getValuesExclusion A exclusion return Arrays stream values filter item gt item exclusion col
  • 如何为html类添加事件监听器?

    如果我有这样的 HTML a href class movieImg div class previewBulk div a a href class movieImg div class previewBulk div a 和 JavaS
  • 感知器中的阈值有什么意义?

    我很难看出阈值在单层感知器中的实际作用 无论阈值是多少 数据通常都是分离的 似乎较低的阈值可以更均匀地划分数据 这是它的用途吗 实际上 当您不使用偏差时 您只需设置阈值即可 否则 阈值为 0 请记住 单个神经元用超平面划分输入空间 好的 现
  • 修复自动完成模式和 linum 模式的烦恼

    我在用着auto complete mode我认为这太棒了 我也是的忠实粉丝linum mode但是当两者一起使用时 特别是当我在新的缓冲区 或行数很少的缓冲区 中工作时 我遇到了一个非常恼人的问题 基本上缓冲区的长度是 x 行 但是当自动
  • 在最坏的情况下二分搜索是否是最优的?

    在最坏的情况下二分搜索是否是最优的 我的老师是这么说的 但我找不到支持它的书 我们从一个有序数组开始 在最坏的情况下 该算法的最坏情况 任何算法总是会花费更多成对比较比二分查找 很多人表示这个 问题不清楚 对不起 所以输入是任何通用的排序数
  • Android:哪个线程调用.onSensorChanged?

    我读过一些关于哪个线程调用各种回调方法的讨论 例如与传感器相关的回调方法 大多数人声称 UI 线程调用回调 即使涉及单独的工作线程 我们确定吗 考虑这种情况 一个单独的类实现 Runnable 和 SensorListener UI 线程
  • Android JNI 在应用程序中检测到错误:调用 JNI GetMethodID 时出现未决异常

    我正在尝试用我的 android 项目运行 Googles OCR Tesseract 我已经使用 android ndk 编译了 tesseract 并且在尝试运行 android 项目后收到此错误 我的环境如下 安卓5 1 1 适用于
  • 无法识别JS服务器

    我试图为 Android 设置 React Native 当我最终尝试运行该应用程序时 反应本机运行 Android 我收到一条消息JS server not recognized continuing with build 构建已成功完成
  • WPF 列表框项和上下文菜单

    我有这样的代码
  • Python 海龟不透明度?

    只是想知道 是否可以用半透明墨水绘制 填充乌龟 就像是 turtle setfillopacity 50 Would set it to 50 transparency 运行Python 2 7 你可以通过这样做 import turtle
  • 如何从图像创建数据,例如 UCI 的“字母图像识别数据集”

    我使用 OpenCV 中的 letter regcog 示例 它使用 UCI 的数据集 其结构如下 Attribute Information 1 lettr capital letter 26 values from A to Z 2 x
  • 同步执行 Sequelize 查询

    我正在使用 Node js 和 Sequelize 带有 Postgres 后端 构建一个网站 我有一个查询返回许多带有外键的对象 并且我想将外键引用的对象列表传递给视图 在示例中 出勤包含黑客马拉松密钥 我想返回黑客马拉松列表 由于代码是
  • 无法使用 matplotlib.use('Agg'),图形始终显示在屏幕上

    我正在研究 matplotlib 不知道如何保存图形而不将其打印在屏幕上 所以我在网上做了一些研究 很多答案都说解决方案是 matplotlib use Agg 并且必须在导入 matplotlib pyplot 或 pylab 之前 然后
  • .NET 流、在对象之间传递流、最佳实践 (C#)

    我目前正在用 c 编写一个小玩具汇编程序 正在经历计算系统要素图书目录 顺便说一句 确实是一本好书 汇编器采用输入文件路径并删除垃圾 注释等 行 然后该文件被传递到解析器 最后传递到创建二进制代码的另一个模块 这并不太复杂 但我不想每次一个
  • 使用指针和比较器 C++ 的优先级队列

    我刚刚开始学习C 有一半的时间我不知道我在做什么 花几个小时在Google上搜索并盲目地将代码放入我的项目中 这可能是一个基本问题 但我似乎做不到把它做好 这是要求对于我的任务 我需要这些 在边缘类中 public bool operato
  • 如何将 Cocoa 应用程序设置为默认 Web 浏览器?

    如何将 Cocoa 应用程序设置为默认 Web 浏览器 我想创建一个当用户单击其他应用程序 邮件 iChat 等 中的 HTTP 或 HTTPS 链接时默认启动的应用程序 制作可充当默认网络浏览器的应用程序有四个步骤 前三个步骤允许您的应用
  • 如何将 Google 地图库与 Flutter Web 结合使用? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在将一个 flutter 移动项目移植到 flutter web 并且想知道如何将 google 地图库与 Flutter Web 一起使用 请