如何使用 Google 地图创建具有位置检测功能的销售区域地图?

Posted

技术标签:

【中文标题】如何使用 Google 地图创建具有位置检测功能的销售区域地图?【英文标题】:How do I create a Sales Territory map with location detection using Google Maps? 【发布时间】:2017-07-21 21:03:16 【问题描述】:

我想将世界地图划分为多个区域。

我的地区数据采用国名、州名、县和邮政编码的形式。

除非有更好的工具,否则我打算使用 Google Maps API。

    如何定义这些区域?我是否使用叠加层?我的不同地理数据可以组合成叠加层吗?

    定义了这些区域后,如何获取位置并检查它所在的区域?

到目前为止,我只收集了定义地区的数据,并在线研究了“销售区域地图”和自定义地图。

【问题讨论】:

【参考方案1】:

GoogleMaps 本身就是一个片段。您可以在地图片段中叠加形状。

我正在就如何定义领域提供一些想法。

1) 使用 Bbox(边界框)——这是一个立方体。您定义这个多维数据集的元中心。您提供对角线长度。您创建一个函数来创建一个 Bbox 多维数据集。每次您将您的积分与该 Bbox 的元中心 (X,Y,Z) 进行比较。如果您的点大于所有最低 X1、Y1、Z1 并且小于所有最高 X2、Y2、Z2,那么您在该区域内。这里,(X1, Y1, Z1) 是你的领土 Bbox 最低角的地理坐标,(X1, Y1, Z1) 是你领土 bobox 最高角的地理坐标。

USGS 使用这个概念来定义领土。这是链接:

https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php

2) 既然您已经说过,您的领土是基于州、城市名称的。 BBOX 在您的场景中似乎不起作用。因此,您必须定义自己的自定义区域。您可以使用反向地理编码器 API 来获取一组地理坐标。然后,您使用这些地理坐标集,使用多边形绘制一个形状。下面为您提供如何绘制自定义形状(自定义区域)。

https://developers.google.com/maps/documentation/javascript/shapes#polylines

绘制自定义区域(领土)后,您现在还需要检查标记(位置)是否属于该领土? 回答:找到两个在两个地理坐标之间画一条直线的点。例如,如果你使用 10 个地理坐标来绘制一个 Shape,你可以有一对地理坐标 (坐标 1,坐标 6),(坐标 2,坐标 7),(坐标 3,坐标 8),(坐标 4,坐标 9),(坐标 5,坐标 10)。现在,您将这对坐标放在一个 ArrayList 中。要知道,如果您的点在该区域内,您必须反复比较您的点是否在 ArrayList 中的那对坐标内。为了获得更高的准确性,您必须使用许多地理坐标来绘制您的领土。这就是方法。

【讨论】:

感谢您的回答。领土边界与地理边界保持一致至关重要:州、县和国家边界。如果我自己画的话会出错,而且手动将世界划分为多个区域需要很长时间。 @Webster,让我简单介绍一下 Google Maps API。

以上是关于如何使用 Google 地图创建具有位置检测功能的销售区域地图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 android 手机上的本地 Google Maps .html 文件平移到当前位置?

如何使用 Google 地图搜索我自己的位置数据(与 Places 搜索 API 的功能相同,但用于我自己的“地点”)

如何恢复具有地形类型(水,森林,平原..)Google / Bing地图的2D地图?

如何在 React-Native 中创建检测自动位置的地图

如何从 Google Maps android 中的当前位置不断检测附近的标记位置?

Google 地图如何知道我的位置?