按行驶距离过滤城市列表

Posted

技术标签:

【中文标题】按行驶距离过滤城市列表【英文标题】:Filter List of Citys by driving Distance 【发布时间】:2022-01-02 01:51:19 【问题描述】:

我对 html、Java 等并不陌生,但我上次编码是几年前的事了。

我有以下德国城市列表,我想按行驶距离(以公里为单位)过滤它们。我只想显示距离我的“主要位置”不到 75 公里或正好 75 公里的城市。 我会手动完成,但这不是我必须过滤的唯一列表。

“坏艾尔森, 布赫兹, 汉诺威, 海森, 卢登, Samtgemeinde Lindhorst, 贝克多夫, 赫尔森, 柏林, 林德霍斯特, 吕德斯菲尔德, Samtgemeinde Nenndorf, 巴特嫩多夫 急速, 卡塞尔, 霍恩霍斯特, 萨斯菲尔德, Samtgemeinde Niedernwöhren, 劳恩哈根, 梅尔贝克, 多特蒙德, 尼登沃伦, 诺德塞尔, 波哈根, 维登萨尔, Samtgemeinde Nienstädt, 帮助, 赫斯佩, 法兰克福, 宁施塔特, 弗莱堡, 塞格布鲁赫, 波茨坦”

我考虑过使用网站“www.luftlinie.org”作为我的过滤器。 当我给它两个位置时,它会在称为“值”的跨度内输出以公里为单位的距离。 我开始寻找 URL,我可以在插入城市名称时使用它来获取输出。它是: "https://www.luftlinie.org/Hameln,Niedersachsen,DEU/"cityname",Niedersachsen,DEU/"

我现在要做的挑战:

将城市列表放入变量中。 使用 var 将它们放入过滤器 URL 检查跨度“值”是否小于 75 公里或等于 75 公里。 如果是肯定的,则在简单列表中显示名称,否则不显示

过去这对我来说不是问题,我使用 phpjavascript jquery,但今天真的很难理解,我尝试的所有脚本都没有显示任何内容。 这是我尝试过的一个例子......

<script>

$.get('https://www.luftlinie.org/Hameln,Niedersachsen,DEU/berlin,%20niedersachsen').then(function (html) 
    // Success response
    var $mainbar = $(html).find('#rt');
    document.write($mainbar.html());
, function () 
    // Error response
    document.write('Access denied');
);
</script>

如果有人可以帮助我完成那部分,那就太好了,因为我已经花了大半天的时间......

【问题讨论】:

【参考方案1】:

Will Jenkins 所说的通常是正确的,但我查看了网站本身,右下角的“API”链接转发到 docs.distance.to/api。 因此,与其通过手动抓取另一个网站的所有工作,为什么不使用底层 API 呢?然后应该解决 CORS 问题,而且速度更快、效率更高。唯一的缺点是您需要在Rapid API 注册,IIRC 他们有一个非常慷慨的免费套餐。 祝你好运!

【讨论】:

哦,谢谢,我知道!我想我会再次选择简单的方法...:D【参考方案2】:

你不能 get 使用 jQuery 之类的客户端代码跨域网页 - 浏览器不允许这样做(see here 用于同源策略的某些背景)。您要么必须使用服务器端解决方案,例如Node 或 Java,或通过 API 访问您想要的数据。

看起来他们提供的an API here 可能适合您的需求。

【讨论】:

但它应该适用于 php 吗? 是的,确实应该这样做(但是你当然会遇到如何可视化结果的问题......) 简单的回显列表或在 div 中显示就足够了

以上是关于按行驶距离过滤城市列表的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询按多个坐标边界过滤

基于 HTML 5 Geo Location 按表单选择下拉列表过滤结果

Django admin.py 过滤器中的 HTML 输入文本框

地理位置:按邻近度过滤

抽象类的奏鸣曲管理员:如何按子类属性过滤

Django 仅使用 Sqlite 按距离过滤(无 GeoDjango、PostGres、MySQL、GIS)