谷歌地图颤动检查点是否在多边形内

2024-05-16

我正在使用 google-maps-flutter 插件开发 flutter 项目,我想检查用户位置是否位于我在地图上创建的多边形内。有一个简单的方法使用 JavaScript api(con​​tainsLocation() 方法),但对于 flutter,我只找到了一个第三方插件,google_map_polyutil,它仅适用于 android,当我运行我的应用程序时,我得到了安全蠕虫。还有其他方法吗?


I found this https://stackoverflow.com/questions/26014312/identify-if-point-is-in-the-polygon答案并只是修改了一些小东西以与 dart 一起使用,我对硬编码的多边形进行了测试。列表 _area 是我的多边形,而 _polygons 是我的地图控制器所必需的。

final Set<Polygon> _polygons = {};
List<LatLng> _area = [
LatLng(-17.770992200, -63.207739700),
LatLng(-17.776386600, -63.213576200),
LatLng(-17.778348200, -63.213576200),
LatLng(-17.786848100, -63.214262900),
LatLng(-17.798289700, -63.211001300),
LatLng(-17.810547700, -63.200701600),
LatLng(-17.815450600, -63.185252100),
LatLng(-17.816267800, -63.170660900),
LatLng(-17.800741300, -63.153838100),
LatLng(-17.785867400, -63.150919800),
LatLng(-17.770501800, -63.152636400),
LatLng(-17.759712400, -63.160361200),
LatLng(-17.755952300, -63.169802600),
LatLng(-17.752519100, -63.186625400),
LatLng(-17.758404500, -63.195551800),
LatLng(-17.770992200, -63.206538100),
LatLng(-17.770996000, -63.207762500)];

函数结束是这样的:

bool _checkIfValidMarker(LatLng tap, List<LatLng> vertices) {
    int intersectCount = 0;
    for (int j = 0; j < vertices.length - 1; j++) {
      if (rayCastIntersect(tap, vertices[j], vertices[j + 1])) {
        intersectCount++;
      }
    }

    return ((intersectCount % 2) == 1); // odd = inside, even = outside;
  }

  bool rayCastIntersect(LatLng tap, LatLng vertA, LatLng vertB) {
    double aY = vertA.latitude;
    double bY = vertB.latitude;
    double aX = vertA.longitude;
    double bX = vertB.longitude;
    double pY = tap.latitude;
    double pX = tap.longitude;

    if ((aY > pY && bY > pY) || (aY < pY && bY < pY) || (aX < pX && bX < pX)) {
      return false; // a and b can't both be above or below pt.y, and a or
      // b must be east of pt.x
    }

    double m = (aY - bY) / (aX - bX); // Rise over run
    double bee = (-aX) * m + aY; // y = mx + b
    double x = (pY - bee) / m; // algebra is neat!

    return x > pX;
  }

请注意 Polygons 属性和 onTap 方法。我试图检查在地图中创建的标记是否在我的多边形内:

GoogleMap(
                          initialCameraPosition: CameraPosition(
                            target: target, //LatLng(0, 0),
                            zoom: 16,
                          ),
                          zoomGesturesEnabled: true,
                          markers: markers,
                          polygons: _polygons,
                          onMapCreated: (controller) =>
                              _mapController = controller,
                          onTap: (latLng) {
                            _getAddress(latLng);
                          },
                        )

然后我在 _getAddress 方法中使用了以下调用:

_checkIfValidMarker(latLng, _area);

我希望它能帮助您创建您需要的东西。

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

谷歌地图颤动检查点是否在多边形内 的相关文章

  • cmd:找不到服务:活动#Error:ADB 在 flutter 中退出,退出代码为 1

    更新 android studio 后 我运行我的 flutter 程序 错误表明 Launching lib main dart on AOSP on IA Emulator in debug mode Running Gradle ta
  • 将下拉项定位在按钮 Flutter 下方

    我正在拼命寻找一种方法将项目放置在按钮下方 正如您所看到的 如果先前选择了第一项 则列表顶部与按钮处于同一级别 但是 如果我之前选择了最后一项 则下拉列表的位置使列表在按钮级别结束 这不是我想要的行为 我希望它始终位于第一个屏幕截图中 即使
  • 使用 Google 地图实现最佳地图路线

    有没有办法使用 Google Maps API 来获取给定一组航路点的 优化 路线 换句话说 旅行推销员问题的 足够好 解决方案 或者它是否总是返回带有按指定顺序点 Google Maps API DirectionsRequest 中有一
  • 在flutter中从cloud_firestore删除文档

    我正在返回一个streamBuilder在streamBuider内部 它返回一个小部件 现在我已经用可忽略的方式包装了一个小部件 以便我可以从 cloud firestore 的集合中删除该文档 showingTheSelectedDat
  • Flutter:日期格式无效 24-09-2022

    for date comparison DateTime stdt DateTime parse postList startDate toString DateTime endt DateTime parse postList endDa
  • Angular 5 - 谷歌未定义(谷歌地图)

    我想在我的 Angular 5 应用程序上使用谷歌地图 但遇到了一些问题 加载视图时 我在 js 控制台中收到错误 LoginComponent Host ngfactory js sm 1 ERROR ReferenceError goo
  • 让 Google 地图在刷新后保留缩放和居中?

    如何让 Google 地图保留用户的视图 缩放级别和 HTTP 刷新后 现在 它会在每次刷新后重置视图 我可以调整代码吗 下面说 zoom 当前缩放级别 和 center 当前中心 位置 以某种方式 function initialize
  • 如何在flutter android插件包中处理android生命周期

    我需要知道 android 插件包中 flutter 应用程序视图的当前状态 现在 我观察颤振视图中的状态https docs flutter io flutter widgets WidgetsBindingObserver class
  • 有没有相当于 mkmapsnapshotter 的 Google 地图?

    我有一个UITableView其中可能包含大量单元格 并且在某些单元格中我想要一个UIImageView显示一个位置的地图 其坐标仅在运行时已知 我希望表格视图能够平滑滚动 并且我希望单元格中的地图根本不可滚动 我被指示避开苹果地图 除了
  • 如何在不影响背景内容的情况下弯曲底部导航栏角?扑

    我创建了一个带有颤动的自定义底部导航栏 但我仍然可以看到白色填充了弧角后面的背景 我想看看背景内容 这就是底部导航栏的样子 正如你所看到的 角落里充满了白色 这是我的底部导航栏代码 bottomNavigationBar Container
  • 获取一条线与地平线的角度

    我想知道如何获得线 A B 与水平轴 X 的角度 SO 中的其他问题仅在两条线之间进行此操作 我知道我总是可以绘制第二条线 A C 并计算 但我想知道是否有更快的方法 编辑 我非常确定我没有进行过早的优化 您可以使用atan为了那个原因 a
  • 如何在我的谷歌上嵌入转弯导航

    我想在我的 Android 应用程序中嵌入逐段导航 请给我一个教程或如何执行此操作的想法 提前致谢 如果您不固定使用谷歌地图 您可以使用基于 OpenStreetMap 地图的维基百科版本 的 SDK 有几个不错的 SDK 提供商 skob
  • Flutter 错误:找不到正确的 ScopedModel

    我正在尝试在我的 flutter 项目中创建一个范围模型 但我似乎无法弄清楚为什么会出现错误 这个作用域模型实现有什么问题 我有一个带有底部导航器的主页 在个人资料选项卡中 我在树深处的小部件中获取了我需要的关注者列表 因此我尝试使用sco
  • Flutter blue plus 在发布模式下不起作用

    flutter run release Launching lib main dart on motorola one vision in release mode Running Gradle task assembleRelease 3
  • 从 Chrome 应用程序使用 Google 地图 API

    我正在尝试在 Chrome 应用程序中使用 Google 地图 每当我尝试加载 JavaScript 时 都会收到错误 Refused to load the script https maps googleapis com maps ap
  • Flutter Firebase 身份验证:启动延迟

    我在应用程序中使用 Provider 和流 FirebaseAuth instance onAuthStateChanged 来决定启动时重定向到哪里 但是尽管用户已经登录 从之前的启动 但应用程序在登录屏幕上启动 几乎 1 秒后重定向到主
  • 如何在Flutter中保存图像文件?使用 Image_picker 插件选择的文件

    我真的很困惑 Flutter 很棒 但有时会让人困惑 所有代码都完成了 所选文件也在预览中显示 但我尝试将该文件保存在本地 Android 存储中 我无法获得成功 Future getImage ImageSource imageSourc
  • 意外的迭代器函数和 Iterable.take 行为

    我正在编写一个名为 批次 的简单函数 该函数应该将一个可迭代对象拆分为大小为 size 的可迭代对象的可迭代对象 然后我遇到了生成器函数和 Iterable take 方法的奇怪行为 当期望 知道 python 生成器行为时 这段代码 It
  • 导航到 Flutter 中的新屏幕

    如何在 Flutter 中导航到新屏幕 这些问题很相似 但比我问的要多 Flutter 导航到新屏幕 并清除所有以前的屏幕 https stackoverflow com questions 52689049 flutter navigat
  • 当 AppLifeCycleState.detached 被调用时?

    I ve class PageState extends State

随机推荐

  • 调试 Java InterruptedException,即查找原因

    在调试Android应用程序时 有时中断异常发生并使应用程序崩溃 我已经能够在默认异常处理程序上设置断点 但调用堆栈不提供信息 at java util concurrent locks AbstractQueuedSynchronizer
  • WPF 中列表框的数据验证

    我有一个 ListBox 绑定到类型 T 的 ObservableCollection 每个 ListBoxItem 都是一个复选框 IsChecked 绑定到 T 中的 bool 属性 我想验证 ListBox 中的选中项 以便至少必须选
  • 从 Amazon S3 存储桶下载文件的脚本

    尝试编写脚本以从 Amazon S3 存储桶下载文件 cURL 网站上的示例遇到问题 下面的脚本产生 我们计算的请求签名与您的签名不匹配 假如 检查您的密钥和签名方法 感谢任何帮助 bin sh file filename php buck
  • 如何用C语言编写程序来测量缓存的速度?

    编写一个程序并尝试比较 如果可以的话测量 从主存和缓存访问数据的时间 如果可以的话 那么如何衡量每一级缓存的速度呢 您需要想出一个启发式方法 强制 100 或非常接近 缓存未命中 希望您有缓存失效操作码 和 100 缓存命中 万岁 这适用于
  • 无论如何,要控制宋何时选择Android.bp,何时不选择?

    使用新的构建系统 即 Soong 安卓取代Android mk with Android bp 还有 Android Q 及以上版本 Soong将选择所有Android bp文件 无论所有文件都存在于何处 早些时候 对于 2 级和 3 级模
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • 起订量和代码合同

    当使用类不变量时 代码契约似乎到处注入代码 像这样的东西 ContractClassFor typeof IX interface IXContract ClassInvariant void Invariant ContractClass
  • 对于只有 10000 个单词的字典来说,真正需要什么嵌入层 output_dim?

    我正在训练一个 RNN 其单词特征集非常少 大约 10 000 个 我计划在添加 RNN 之前从嵌入层开始 但我不清楚真正需要什么维度 我知道我可以尝试不同的值 32 64 等 但我宁愿先有一些直觉 例如 如果我使用 32 维嵌入向量 则每
  • Outlook 无法识别一个或多个姓名

    我有以下 vba 代码 它读取邮箱并向任何发送无效代码作为邮箱回复的用户发送回复 但有时会收到运行时错误 Outlook 无法识别一个或多个名称 我的问题是 创建新的 MAPI 配置文件是否可以解决该问题 或者我是否需要添加一个代码来解析地
  • 组件的不同位置停止了类型转换

    我正在为我的主项目用 C 编写一个自定义 Control 类 有 2 个项目 一个用于我的控制项目 一个用于我的主项目 这两个项目位于同一解决方案中 我将主项目中的引用添加到控制项目中 我注意到 第一次将控件从工具面板拖到主 winform
  • CSS 边框底部的曲线

    我需要 CSS 中的这个图像 并且在这个边框内需要一个背景图像 我努力了 border radius 0 0 50 50 webkit border radius 0 0 50 50 但没有得到所需的形状 任何帮助 将不胜感激 边界半径 您
  • go中有memset的类似物吗?

    在 C 中 我可以使用某些值初始化数组memset https msdn microsoft com en us library aa246471 28v vs 60 29 aspx const int MAX 1000000 int is
  • 如何禁用 ng2-dragula 上的某些元素的拖动

    我想在顶部显示名称组并取消其上的拖动事件 如何禁用移动某些元素 例如该组名称位于顶部 我的代码是 dragulaService drag subscribe value gt console log drag value 0 我的模板 di
  • Flutter编译错误:必须返回非空值,因为返回类型“String”不允许为空 - displayString

    我的测试无法在我的 Flutter 项目引用的仅 Dart 项目中编译和运行 我收到以下错误消息 Failed to precompile test test pub cache hosted pub dartlang org analyz
  • 在 github 上下载 ZIP 时没有 .xcodeproj 文件

    我正在尝试将我的 GitHub 项目放入 Xcode 中 当我从 GitHub 下载时 zip 文件不包含任何 xcodeproj 文件 另外 即使我在 xcode 上登录 GitHub 克隆 下载时也没有 在 Xcode 中打开 选项 如
  • dart javascript 编译器 (dart2js) 如何工作?

    Dart 在其自己的 Dart VM 中运行 但您可以将其编译为现代优化的 JavaScript 但这是如何运作的呢 网上有任何文章或论文解释该过程吗 我想知道这是否是一个简单直接的元素与元素匹配 仅耗时开发 处理 或者 Dart 的某些元
  • 将 Armadillo C++ 库导入 Xcode

    我是 Mac 用户 正在尝试安装和导入 C Armadillo 库 以下是我到目前为止所采取的步骤 1 我从其网站下载了犰狳库 2 我仔细阅读了下载文件中的 Readme txt 文件 解释了如何安装它 3 我使用CMake将犰狳下载文件制
  • Android 导航回到 Activity;不要重新加载父级

    我有一个场景 我单击 ListFragment 并启动一个新的 Activity 如下所示 public void onListItemClick ListView l View v int position long id super o
  • 错误 libGL.so:无法使用 Android 模拟器打开共享对象文件

    我试图在 Ubuntu 12 04 64 位 中运行 android 模拟器 但是 我收到以下错误 Starting emulator for AVD emulatr Failed to load libGL so error libGL
  • 谷歌地图颤动检查点是否在多边形内

    我正在使用 google maps flutter 插件开发 flutter 项目 我想检查用户位置是否位于我在地图上创建的多边形内 有一个简单的方法使用 JavaScript api con tainsLocation 方法 但对于 fl