- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何计算 map 东点和西点之间的距离(以米为单位)?假设用户改变了滚动 map 的位置,然后我用 mapView:didChangeCameraPosition: 委托(delegate)方法捕捉到移动,但我不知道如何计算距离。
最佳答案
这是一个辅助函数,可用于计算两个坐标之间的距离(以米为单位):
double getDistanceMetresBetweenLocationCoordinates(
CLLocationCoordinate2D coord1,
CLLocationCoordinate2D coord2)
{
CLLocation* location1 =
[[CLLocation alloc]
initWithLatitude: coord1.latitude
longitude: coord1.longitude];
CLLocation* location2 =
[[CLLocation alloc]
initWithLatitude: coord2.latitude
longitude: coord2.longitude];
return [location1 distanceFromLocation: location2];
}
更新:
这取决于您所说的 map 的“东”和“西”是什么意思,因为 map 可能会旋转或倾斜。即使它没有倾斜或旋转,由于地球的曲率, map 的顶部和底部之间的宽度也会以米为单位不同(靠近赤道的边缘会比边缘更宽以米为单位)距离赤道较远)。放大得越多,差异就越小。
但是假设您想要获取 map 左下角和右下角之间的距离(以米为单位),您可以使用以下方法:
GMSMapView* mapView = ...;
CLLocationCoordinate2D bottomLeftCoord =
mapView.projection.visibleRegion.nearLeft;
CLLocationCoordinate2D bottomRightCoord =
mapView.projection.visibleRegion.nearRight;
double distanceMetres = getDistanceMetresBetweenLocationCoordinates(
bottomLeftCoord, bottomRightCoord);
如果你想考虑旋转/倾斜,你可以将可见区域包裹在 GMSCoordinateBounds
中,然后计算东南角和西南角之间的距离,例如:
GMSMapView* mapView = ...;
GMSCoordinateBounds* bounds = [[GMSCoordinateBounds alloc]
initWithRegion: mapView.projection.visibleRegion];
CLLocationCoordinate2D southWest = bounds.southWest;
CLLocationCoordinate2D southEast = CLLocationCoordinate2DMake(
bounds.southWest.latitude, bounds.northEast.longitude);
double distanceMetres = getDistanceMetresBetweenLocationCoordinates(
southWest, southEast);
但是,这可能比屏幕上实际可见的区域更宽,因为 GMSCoordinateBounds
将可见区域的四边形包裹在轴对齐的边界框中。
另一种选择是在 map View 框架的每一侧选择点,然后使用 map View 的投影将这些点转换为纬度/经度,例如:
GMSMapView* mapView = ...;
CGPoint middleLeftPoint = CGPointMake(
0, mapView.frame.size.height / 2);
CGPoint middleRightPoint = CGPointMake(
mapView.frame.size.width, mapView.frame.size.height / 2);
CLLocationCoordinate2D middleLeftCoord =
[mapView.projection coordinateForPoint: middleLeftPoint];
CLLocationCoordinate2D middleRightCoord =
[mapView.projection coordinateForPoint: middleRightPoint];
double distanceMetres = getDistanceMetresBetweenLocationCoordinates(
middleLeftCoord, middleRightCoord);
关于ios - 谷歌地图 iOS SDK : Distance between east and west points on the map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852564/
这是文件 1(我的导师希望我们为每个扩展使用单独的文件) import javax.swing.*; import java.awt.*; public class Lab2 extends JFra
我正在尝试使用 Border Extjs 4.2.1 中的布局,当我指定 North 时和 South它们扩展并填充视口(viewport)中的整个水平空间的容器,我希望它们允许 West面板改为全高
我正在从我的电子商务商店导出客户名称(和街道地址),我们有许多法国客户名称,导致导出到 CSV 时出现一些问题。我以为我已经通过使用 utf8_decode() 修复了它,如下所示: echo utf
我将对象动态添加到面板,然后添加到我的边框布局。我需要西部、中心和东部的大小都相等。这是我目前所拥有的: static int width = 300;//Screen width static in
我正在尝试使用优秀的 jQuery UI 布局插件创建一个完整的页面界面。但不幸的是,西侧无法用我在下图中提到的鼠标调整大小。我找不到任何解决方案。 下面是我使用的代码: 下面是我的西
我正在使用 Sencha extjs 5。我在西布局中加载树形菜单时遇到问题。我似乎无法显示任何东西。请帮忙。 这是我的 Main.js 代码: items: [ { titl
我通过 Azure 门户购买了应用服务证书,并成功将其添加到我的北欧应用服务中。我还创建了一个 UK West 应用服务,并验证了相同的域,但在尝试导入它时出现错误。 我能找到的唯一错误信息告诉我查看
我有一个 JPrame 并将其设置为 borderLayout。然后我创建了另一个使用 BoxLayout 的 JPnael。现在我已将标签(包含文本)和文本字段添加到 JPanel 中。我还将 JP
我想使用 libcoud 列出 ec2 区域中的节点。我怎么做?下面仅给出东边。 Driver = get_driver(Provider.EC2) conn = Driver(key, secret
layout-latest.js ui-layout-west 面板 west: { paneSelector: ".ui-layout-west"
我正在使用 silverlight for windows embedded。我在源代码管理中有两个项目: 带有 UI 的 Expression Blend 项目 带有偶数处理程序后端代码的 VC++
我尝试列出帐户中的所有实例,使用代码: for region in boto.ec2.regions(**creds): print region.name ec2_conn = bo
我使用的是 AWS Ruby 开发工具包,但发现一堆由 describe_spot_price_history 返回的错误消息。错误消息显示:无效可用区:eu-west-1a 此消息仅针对欧洲 (eu
我在 3 台机器上安装了 AWS for Powershell Tools - 两台 Windows 服务器和一台台式 Windows PC。使用相同的配置,一台服务器失败并出现错误 GET-S3Bu
我正在尝试让 Newey-West 标准错误与 plm 包中的 pmg()(Mean Groups/Fama-MacBeth 估计器)的输出一起使用. 按照 here 中的示例: require(
我正在使用 BorderLayout、3 个带有 GridLayout 的容器和 8 个 JLabel 的数组。 Container #1 使用 2 个 JLabel,Container #2 使用
我想要一个系数和与之关联的 Newey-West 标准误差。 我正在寻找可以执行以下 R 代码所执行的操作的 Python 库(理想情况下,但任何可行的解决方案都可以): library(sandwi
更新 - 我关闭了这个问题和 posted on crossvalidated.com . 我找到了一些关于使用 sandwich 的好信息。包和NeweyWest()函数来查找异方差自相关一致 (H
我在 aws 区域 us-east-1 中有一个通过 terraform 代码运行的数据库实例。现在我想在另一个区域创建该数据库的只读副本:us-west-1。 这是代码: # PostgreSQL
我想使用 http://developer.marklogic.com/products/cloud/aws 中提供的云形成模板在 AWS eu-west-1 区域安装 MarkLogic 解决方案但
我是一名优秀的程序员,十分优秀!