计算中心的经纬度坐标

2024-01-12

I'm looking for a elegant solution that calculates the center between several latitude-longitude /questions/tagged/latitude-longitude coordinates (for example, to simply center a map to the center of a polygon).

Table: locations:

id |    city    |   latitude   |  longitude
-----------------------------------------------
1  |   Berlin   |   52.524268  |   13.406290
-----------------------------------------------
2  |   London   |   51.508129  |  -0.1280050    
-----------------------------------------------
3  |   Hamburg  |   53.551084  |   9.9936817
-----------------------------------------------
4  |  Amsterdam |   52.370215  |   4.8951678
-----------------------------------------------

目前的计算:

function calculateCenter($array_locations) {

    $minlat = false;
    $minlng = false;
    $maxlat = false;
    $maxlng = false;

    foreach ($array_locations as $geolocation) {

         if ($minlat === false) { $minlat = $geolocation['lat']; } else { $minlat = ($geolocation['lat'] < $minlat) ? $geolocation['lat'] : $minlat; }
         if ($maxlat === false) { $maxlat = $geolocation['lat']; } else { $maxlat = ($geolocation['lat'] > $maxlat) ? $geolocation['lat'] : $maxlat; }
         if ($minlng === false) { $minlng = $geolocation['lon']; } else { $minlng = ($geolocation['lon'] < $minlng) ? $geolocation['lon'] : $minlng; }
         if ($maxlng === false) { $maxlng = $geolocation['lon']; } else { $maxlng = ($geolocation['lon'] > $maxlng) ? $geolocation['lon'] : $maxlng; }
    }

    // Calculate the center
    $lat = $maxlat - (($maxlat - $minlat) / 2);
    $lon = $maxlng - (($maxlng - $minlng) / 2);

    return array($lat, $lon);
}

当您使用 Google 地图时,您可以使用获取边界() https://developers.google.com/maps/documentation/javascript/reference#Map方法和获取中心() https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds method.

我重新排列了你的坐标以形成一个凸多边形(所有顶点都指向“向外”,远离中心)。通过将第一个坐标作为第一个和最后一个值来闭合多边形polygonCoords array.

See jsfiddle http://jsfiddle.net/k4Q4K/1/

var map; 
var polygon;
var bounds = new google.maps.LatLngBounds();
var i; 
var myLatLng = new google.maps.LatLng(52.5,6.6);
var myOptions = {
  zoom: 5,
  center: myLatLng,
  mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map_canvas"),
    myOptions);

var polygonCoords = [
    new google.maps.LatLng(52.524268,13.406290),
    new google.maps.LatLng(53.551084,9.9936817),
    new google.maps.LatLng(51.508129,-0.1280050),
    new google.maps.LatLng(52.370215,4.8951678),
    new google.maps.LatLng(52.524268,13.406290)//Start & end point 
    ];

polygon = new google.maps.Polygon({
   paths: polygonCoords,
   strokeColor: "#FF0000",
   strokeOpacity: 0.8,
   strokeWeight: 3,
   fillColor: "#FF0000",
   fillOpacity: 0.05
 });
 polygon.setMap(map);

for (i = 0; i < polygonCoords.length; i++) {
   bounds.extend(polygonCoords[i]);
}

// The Center of the polygon
var latlng = bounds.getCenter();

var marker = new google.maps.Marker({
  position: latlng, 
  map: map, 
  title:latlng.toString()
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算中心的经纬度坐标 的相关文章

  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 背景图像占窗口的 100%(并随之调整大小)

    重复 拉伸和缩放 CSS 背景 https stackoverflow com questions 376253 stretch and scale css background 如何拉伸背景图像以覆盖整个 HTML 元素 https st
  • PHP 对象数组不是线性缩放的,而全局数组却可以?

    使用对象内数组作为属性与使用全局 php 数组变量相比 存在一个主要的性能问题 为什么 为了对这个问题进行基准测试 我创建了以下基准测试 它存储一个越来越大的数组 并以 stdClass 作为节点 运行了两个测试 一个使用类中的数组属性 另
  • 如何阅读Haskell中内置函数的实现代码/源代码?

    例如 如果我想阅读默认的源代码curryPrelude 中的函数 我在哪里引用 有没有办法阅读它的实现 我尝试在Hoogle中搜索它 但它没有给出确切的实现 只是给出了输入和输出类型 我在堆栈上使用 GHCI 来运行 haskell 胡格尔
  • SQL查询的执行顺序

    我对该查询的执行顺序感到困惑 请解释一下 我对何时应用联接 调用函数 随案例添加新列以及何时添加序列号感到困惑 请解释这一切的执行顺序 select Row number OVER ORDER BY SELECT 1 AS Serial N
  • sql server 中的多个 NOT LIKE

    我有一张像这样的桌子 id name 302345 Name1 522345 Name2 1X2345 Name3 2X2345 Name4 1X8765 Name5 2X2123 Name6 502345 Name7 M62345 Nam
  • 为什么食谱在看起来没有必要时提倡重写 getItemViewType 和 getViewTypeCount ?

    我一直在学习 Commonsware Android 编程教程 在教程 5 额外学分 2 中 挑战是根据对象的 类型名称 餐厅的 类型 属性 使用多种布局在 ListView 中显示行 这是一个字符串 因此 它建议重写getItemView
  • 替换lua中包含特殊字符的字符串

    我想替换lua中的字符串 这是字符串 strng begin matrix 1 2 3 4 5 6 7 8 10 end matrix 我想更换 begin matrix by by by end matrix by 我还想删除所有空格 所
  • Python 3 静态成员

    我正在努力实现以下目标 class A username None username get username def get username self if username is None try uname os environ U
  • npm 命令 - 是否需要 sudo?

    目前我总是跑步sudo npm install
  • 如何模仿描述输出?

    想象一下水果类 class Fruit NSObject override var description String return super description var apple Fruit var banana Fruit p
  • Pandas to_sql“附加”到现有表导致Python崩溃

    我的问题本质上是这样的 当我尝试将 to sql 与 if exists append 一起使用并且名称设置为 SQL Server 上已存在的表时 Python 崩溃 这是我的代码 event listens for engine bef
  • EF 的自定义 ValidationContext?

    我使用 EF 作为我的数据提供程序来保存和验证我的项目 我有一些自定义验证逻辑 需要访问其他服务或项目 我知道 ValidationContext 类提供这些选项 我的问题是如何通过服务提供商或 EF 项目获取自己的验证上下文 当我在 PO
  • 构建过程中出现此错误的原因可能是什么 - “架构 i386 的未定义符号”

    这是我第一次使用位置服务 并且遇到了以下链接器错误 i386 架构的未定义符号 OBJC CLASS CLLocationManager 我已经添加了 import
  • 如何根据我的 json 响应数组制作标签栏(ios swift)

    问题 我想基于 JSON 响应数组创建选项卡栏 这意味着 如果我得到 6 个元素响应 它将创建 6 个选项卡 尝试过 我已经通过使用水平滚动集合视图来制作它 但我想通过原始选项卡栏来制作它 那么 我该怎么做呢 please tell me
  • 带有正斜杠的哈希片段在 IE 中使用 AJAX 请求抛出 403 错误

    我有一个类似于以下内容的网址 http www example com test 以及当哈希片段被处理时处理的 AJAX 请求 test AJAX 请求没有问题 但在 IE 中会抛出 403 错误 它在所有其他浏览器中运行良好 现在 如果我
  • chrome.runtime.getURL 与 chrome.extension.getURL

    两者有什么区别chrome runtime getURL https developer chrome com extensions runtime method getURL and chrome extension getURL htt
  • pubnub is打字状态 Ionic2

    我已经使用 Ionic2 和 pubnub 实现了聊天 问题是我如何实现isTyping把它展示在我的html 我知道我必须创建一个state在我的用户上 但我不知道如何更新它 My pubnub service https paste o
  • 如何检测 Flutter 中何时选择 TextField?

    我有一个 Flutter TextField 当选择该字段时 它会被软键盘覆盖 当显示键盘时 我需要向上滚动该字段并移开 这是一个很常见的问题 这里提出了一个解决方案StackOverflow 帖子 https stackoverflow
  • PDF JS - 延迟加载?

    看来 pdf js 本身请求 PDF 文件的整个字节范围请求 相反 是否可以在 PDF 加载时仅请求 5 页 在滚动时可以加载另一组 5 页 就像那样 有没有办法通过使用 pdf js 来实现此目的 长话短说 不 PDF 不是连续的存储格式
  • 计算中心的经纬度坐标

    I m looking for a elegant solution that calculates the center between several latitude longitude questions tagged latitu