如何使用 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地图?