高德开源API花式玩法:租房辅助工具

整合高德地图API和58同城数据的Python租房程序开发实战 Python语言由Guido van Rossum于1989年底发明,并在1991年首次发布。它的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或关键字)。Python遵循的是开源社区范式,拥有广泛的社区支持和丰富的库,这使得它在短时间内获得了快速发展。Python的函数通过def关键字定义。Python还支持一些高级特性,如匿名函数(lambda表达式)、列表推导式和生成器,这些特性使代码更加简洁和高效。 阅读详情

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

17e1a651ad09c22e60cdbae612d9a9c7.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7403991780512399387

a7841d603385ceca0a5854c6223f3d4d.jpeg


前言

做gis的同学肯定知道等时圈这个东西,即:在一定时间内通过某种出行方式能到达的范围

53808b72b3b3e2cad2b0e36712bdbec1.jpeg

通过一些计算,我们可以做一些好玩的事情,比如上图通过调用mapbox等时圈接口,计算在蓝色点位附近骑车17分钟可以到达哪些公司或学校。

可能由于国内交通情况更为复杂,做实时性较差的等时圈意义不大,所以高德地图提供了比较稳当的API:公交地铁到达圈,其概念和等时圈类似,你可以选择地铁或公交出行,或者两者兼可,高德接口将计算出可达范围。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

高德公交到达圈的好玩应用

用了很久的高德,发现这个功能好像没有被很好的应用,其实高德早在1.4的API中就提供了此功能,最近正好要换个房子,突然想到这个东西正好可以拿来做一个很棒的辅助。

由于我跟我对象上班的地方离得比较远,所以找个折中的地方租房是是很重要的,我准备查询到两个到达圈后,再计算一下重合部分,在重合部分找房,就准确多了。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

使用AMap.ArrivalRange画出到达圈

首先我做了一个简单的页面

ce35df65e55eff1402c6dcf7b7e457f4.jpeg

左上角的面板用来设置参数,可选地铁+公交、地铁、公交三种方式,出行耗时最大支持60分钟(超过了接口会报错),位置需要传入经纬度。

初始化地图的步骤就不用说了,我讲一下这个小应用的使用逻辑。

首先,点击地图时,拾取该位置的经纬度,并通过逆地理接口获取到位置文本

function handleMapClick(e: any) {
  if (!e.lnglat) return
  if (currPositionList.value.length >= 2) {
    autolog.log("最多添加 2 个位置", 'error') // 你不会想三个人一起住吧?
    return
  }
  var lnglat = e.lnglat;
  geocoder.getAddress(lnglat, (status: string, result: {
    regeocode: any; info: string;
  }) => {
    if (status === "complete" && result.info === "OK") {
      currPositionList.value.push({ name: result.regeocode.formattedAddress, lnglat: [lnglat.lng, lnglat.lat] })
    }
  });
}

可以看到,我把点选的位置信息,暂时存放到了currPositionList里面,比如你在西二旗上班,而你女朋友在国贸,则点选后效果是这样的

ebc1bcc3090e323c35f8dc966025c8ce.jpeg

左侧面板新增了两个位置,点击查询时,我将依次查询这两个到达圈,并渲染到地图上

function getArriveRange() {
  let loopCount = 0
  for (let item of currPositionList.value) {
    arrivalRange.search(item.lnglat, currTime.value, (_status: any, result: { bounds: any; }) => {
      map.remove(polygons);
      if (!result.bounds) return
      let currPolygons = []
      loopCount++
      for (let item of result.bounds) {
        let polygon = new AMap.Polygon(polygonStyle[`normal${loopCount}` as "normal1" | "normal2"]);
        polygon.setPath(item);
        currPolygons.push(polygon)
      }
      map.add(currPolygons);
      polygons.push({
        lnglat: item.lnglat,
        polygon: currPolygons,
        bounds: result.bounds
      })
      if (loopCount === currPositionList.value.length) {
        map.setFitView();
      }
    }, { policy: currStrategy.value });
  }
}

由于接口调用方式是以回调函数的形式返回的,所以我这里记录了一下回调次数,当次数满足后,再去调整视角。这段逻辑运行之后,将是如下结果:

faaa126bdeb3f65d5cabdfc8470f00f8.jpeg

很遗憾,你和你的女朋友,下班后的一个小时内见不成面了,这意味着,如果找一个折中的地方租房,你们上班单程通勤,无论如何都超过一个小时了,如果想尽量接近一个小时,那么看下两者的交汇处

48daa94adf9bea9e2402aea26b931533.jpeg

大钟寺地铁站将会是个很好的选择。

这样仍需要我们手动去观察,那么能不能算一下两者的交集呢?

在高德地图中使用 turf.js 计算多多边形交集

在上面提到的getArriveRange函数中,我新增了这样的逻辑

if (loopCount === currPositionList.value.length) {
  let poly1 = turf.multiPolygon(toNumber(polygons[0].bounds));
  let poly2 = turf.multiPolygon(toNumber(polygons[1].bounds));
  var intersection = turf.intersect(turf.featureCollection([poly1, poly2]));
  if (intersection) {
    let geojson = new AMap.GeoJSON({
      geoJSON: {
        type: "FeatureCollection",
        features: [intersection]
      },
      getPolygon: (_: any, lnglats: any) => {
        return new AMap.Polygon({
          path: lnglats,
          ...polygonStyle.overlap
        });
      }
    });
    polygons.push({
      lnglat: [0, 0],
      polygon: geojson,
      bounds: intersection.geometry.coordinates
    })
    map.add(geojson);
  } else {
    autolog.log("暂无交集,请自行查找", 'error')
  }
  map.setFitView();
}

由于高德地图到达圈获取到的经纬度是字符串,放到 turf 里面会报错,所以这里写了一个简单的递归,将多维数组所有的数据都转化为数字。

// 递归的将多维数组内的字符串转为数字
function toNumber(arr: any) {
  return arr.map((item: any) => {
    if (Array.isArray(item)) {
      return toNumber(item)
    } else {
      return Number(item)
    }
  })
}

使用turf.multiPolygon将获取到的多维数组转化为标准的 geojson 格式,以便于 turf 处理,在turf7.x中,turf.intersect的用法稍有改变,需要turf.featureCollection([poly1, poly2])作为参数传入。

这一步操作 turf 将计算并返回两个多多边形的交集intersection(geojson),但是在高德地图API2.0中,直接传入这个geojson会报错(1.4不会),看了下源码,发现高德有一个操作是直接取第 0 个features,导致它识别不了这种格式的数据,所以我们手动处理下,即:

let geojson = new AMap.GeoJSON({
  geoJSON: {
    type: "FeatureCollection",
    features: [intersection]
  },
  getPolygon: (_: any, lnglats: any) => {
    return new AMap.Polygon({
      path: lnglats,
      ...polygonStyle.overlap
    });
  }
});

这样,高德就可以正确渲染这个数据了,这里需要注意的是,geojson 虽然也是 AMap.Polygon 构造的,但是需要一个特殊参数:path,没有的话,也不会报错,但是渲染不出来。

渲染完成后是这样的:

ed11f14c612a5fbd25e5182e0a12cc8f.jpeg

使用绿色代表重合部分,说明在这之中找房都是可以的。

通过 AMap.PlaceSearch 搜索交集区域的小区

高德提供了通过多边形区域搜索POI的接口

placeSearch = new AMap.PlaceSearch({ //构造地点查询类
   pageSize: 5, // 单页显示结果条数
   pageIndex: 1, // 页码
   map: map, // 展现结果的地图实例
   autoFitView: true // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
 });
 placeSearch.searchInBounds('小区', intersection.geometry.coordinates);
aa9cef3804170f09adcaba952aa12cfb.jpeg

效果如上图所示,这样就可以轻松租房啦!

但是由于此接口是 get 请求,如果交集区域过大,会超出 get 请求长度限制:

723f9cf3959258c070108d9e565575e4.jpeg

结语

这个就叫产品思维,一个简单的API可以延伸出很多有趣的应用。

此仓库已在 github 开源,地址:

https://github.com/LarryZhu-dev/amap_arrivalRange

番外

高德云镜(高德云镜三维重建平台)目前已向企业和政府开放使用(暂未对个人开发者开放)

ddde806ee5134855f057e3cabd547aa6.jpeg

在web端,高德开发了 Cesium 插件用作展示,但目前来看要求配置过高

  • CesiumJS引擎:CesiumJS v1.117+(建议)

  • 浏览器:Chrome v126+(建议)

  • 显卡:16GB显存以上独立显卡,推荐 NVDIA RTX 4090

  • CPU:2.5 GHz 以上(建议)

  • 内存:32GB 以上(建议)

看起来类似谷歌地球的全量城市建模。

  • 官网:yunjing.amap.com/#/

  • 开发文档:yunjing.amap.com/#/docs


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,“长按”或“扫描”下方二维码噢:

a2a5916695dce2e058d08bc3ce8323b1.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

4e45bf9442b856f81787d574343b660c.png

49531afd9c6af32af77c84dbe3a8b8f7.png5e4f438cbbb89887920a1d0360d80bff.pnga93534c560ff6205d80463be588e040b.png43774b9ad6e0c46c8200039c1ceeb512.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
租房API调用 运用python代码结合高德地图App设计的租房app 包含项目代码和爬取的相关数据 立即下载

相关推荐

基于JAVA的GB28181实现之SIP服务核心组件解析

本文深入解析了基于JAVA的GB28181标准中SIP服务的核心组件实现,包括协议栈选择、消息处理引擎、事务管理器等关键技术点。通过实战案例分享海康威视、大华设备的特殊处理技巧,并提供性能优化和常见问题排查指南,帮助开发者高效构建稳定的视频监控系统。

weixin_30892037的博客 264

【亲测免费】 探秘大数据宝藏:高效利用Python抓取高德POI数据的开源神器

探秘大数据宝藏:高效利用Python抓取高德POI数据的开源神器 【下载地址】Python抓取高德POI数据突破数据量限制 Python抓取高德POI数据,突破数据量限制本仓库提供了一个Python脚本程序及相关输入文件,帮助用户抓取高德地图的POI(Point of Interest)数据,并突破数据量的限制 ...

gitblog_09815的博客 830

基于TI C2000的CCS安装与工程创建完整示例

手把手演示基于TI C2000系列的CCS安装过程及首个工程创建步骤,涵盖环境配置与常见问题处理,助力快速上手嵌入式开发,ccs安装和工程搭建不再难。

weixin_42476987的博客 972

【亲测免费】 高德地图开源项目使用教程

``` amap/ ├── docs/ │ ├── README.md │ └── CONTRIBUTING.md ├── src/ │ ├── main/ │ │ ├── App.js │ │ └── index.js │ └── config/ │ ├── default.json │ └── production.json ├── te...

gitblog_00969的博客 828

机器学习实例(预测房价中位数)(附代码)

1、下载数据: 下载一个压缩文件housing.tgz即可,其包含housing.csv(已经包含书有数据。),用 tax xzf housing.tgz 来解压提取CSV文件。 import os import tarfile import urllib.request DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/" HOUSING_PATH = os.path.join("datasets",

qq_51153436的博客 2763

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7606

高德地图:弧度飞线图层详解

高德地图:弧度飞线图层详解

m0_58293192的博客 3407

x86架构学习之中断

外部中断,一般是由CPU的外部引脚电信号触发,这些引脚留给硬件厂商去定义中断,例如主板厂商可以将USB中断挂载70号中断引脚上,MCU厂商可以将片上外设(SPI、I2C等)的中断挂载在指定中断线上。中断描述符主要用于说明该中断的入口地址,中断描述符表则是将中断描述符一项一项管理在一个数组中,每一项中断描述符占用8个字节(64位模式下,占用16字节),其。简称中断,后文如果没特别说明,中断都指外部中断,由外部IO事件触发,由于时钟源来自CPU外部,与CPU时钟不同源,因此是异步事件。

qq_26962739的博客 1572

Python + 高德API实现自助找房

(一)本节知识点: 1,Python requests、BeautifulSoup、csv模块的使用2,高德地图JavaScript API使用参考文档:1.高德 JavaScript API 帮助文档2.高德 JavaScript API 示例中心3.高德开发者管理中心4.Requests: HTTP for Humans5.Beautiful Soup 4.2.0 文档6.CSV 文件的读写(二)安装软件包Pip install python-bs4pip install request项目中用到

zzjlhlcd的博客 1403

Far planner 部署真实小车 & 树莓派部署lego_loam

今天开一贴Far planner的部署,也算是lego loam的部署吧 因为state_estimation用的是lego loam小车底盘: 轮趣的mini差速底盘外加多一层钢板,中间层用来放velodyne的电池(小的电池还没到,大的电池塞不进去目前)和velodyne信号盒子。前面还可以加一个相机。底层用来放小车的电池和马达等设备了,底层不用动。最上面一层用来安装velodyne16线雷达,需要额外钻孔(如果买轮趣的话可以找老板钻个孔?我也不确定,我自己钻的)。 雷达固定螺丝用的是 1/4-20*3

博客 4303

基于YOLOv11的军事目标识别系统设计与实现(坦克、舰船检测)

DOTA-v2.0(包含多种军事装备的航拍图像)图片数量:11,268类别:18类,包括坦克、舰船、战斗机等分辨率:800×800~4000×4000HRSC2016(高分辨率舰船检测数据集)图片数量:1,061类别:舰船及子类特点:包含多种视角和复杂背景图片数量:5,000+类别:22种军用飞机标注:精确边界框自建数据集建议收集来源:公开军事演习视频、卫星图像、模拟游戏截图数据增强:模拟不同天气、遮挡、低光照等战场环境。

YOLO 450

要使用高德地图 API 和 Python 解决租房问题,你可以按照以下步骤操作

在使用 API 时,请确保遵守相关法律法规和服务条款。print("距离:", rental["distance"], "米")print("距离:", rental["distance"], "米")api_key = "your_api_key" # 请替换为你的高德地图 API 密钥。api_key = "your_api_key" # 请替换为你的高德地图 API 密钥。print("地址:", rental["address"])print("地址:", rental["address"])

博客域名:borter.blog.youkuaiyun.com 970

后仿真中的必懂VCS仿真选项之initreg和deposit

后仿真中,我们常常对于没有复位寄存器和存储器单元,使用仿真选项之initreg和deposit,两种处理方式。今天做总结。请注意:请勿将两者进行同时使用。对于到底选取哪种方式,要结合实际的情况决断。但是,两者同时使用,会有冲突,得不到预期结果。

那么菜的博客 4333

利用python和高德api实现租房系统

引言 也许很多人还在为租房而困扰,因为每当打开第三方app,都会被各式各样的房东或者是中介看得蒙蔽了双眼,所以,本篇将介绍怎样通过代码与相关的api完成租房,并大大提高效率。 ...

submarineas的博客 4041

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

基于Python实现高德地图58租房房源位置信息展示源码:实现房源地图可视化

基于Python实现高德地图58租房房源位置信息展示源码:实现房源地图可视化 【下载地址】基于Python实现高德地图58租房房源位置信息展示源码 此项目是一个基于Python开发的实用工具,结合高德地图API与58租房房源数据,帮助用户在地图上直观展示租房信息。通过输入工作地点,系统自动补全并显示可到达范围,同时支持批...

gitblog_06740的博客 832

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

基于Django的租房数据展示系统设计与实现

首先通过python开源爬虫框架scrapy对目标房屋租赁信息网站进行爬取,包括58同城、安居客、107间房、我爱我家网、房天下、列表网、58同城移动端等,依据不同网页的不同特性选择不同的爬取策略,编写爬虫代码,过滤并抽取所需出租房源信息,建立以城市为区分的房源信息数据库。分析了系统所要实现的功能,设计出总体架构,对其进行细分,分成各个模块,然后对各个模块进行了介绍。第一章绪论,说明了该系统开发的可行性与现实应用意义,介绍了爬虫技术及反爬虫技术的发展现状,介绍了开发该系统所预期达到的目标及所需做的工作。

毕业作品网站 1530

基于php的在线租房管理系统(程序+文档+讲解)

在租房市场需求多元化与交易流程数字化的背景下,传统租房管理存在明显短板:房源信息真假难辨,中介虚假图片、虚报价格现象频发;租约签订依赖线下纸质合同,流程繁琐且易丢失;租客报修响应慢,维修进度不透明;房东租金催收、押金退还需手动跟进,易产生纠纷。​ 基于 PHP 开发的在线租房管理系统,可破解上述问题。技术设计上,采用 LAMP 架构(Linux+Apache+MySQL+PHP)搭建稳定后端,集成高德地图 API 实现房源地理定位,对接电子签章平台生成合法租约,引入阿里云短信服务推送关键节点通知;前端采用响

941

高德地图+58租房:空间语义驱动的本地生活服务重构

LBS(基于位置的服务)是本地生活数字化的底层基础设施,其核心在于将静态地理坐标升维为可计算、可感知、可响应的空间语义。高德地图并非简单渲染POI,而是通过实时POI动态权重建模、空间可信度分层与跨平台行为意图对齐,构建起用户真实场景下的决策引擎。这种能力使租房服务从信息列表跃迁为空间叙事——例如‘步行5分钟内可租’不再是距离参数,而是融合通勤路径、天气、时段与用户偏好的动态判断。尤其在房产中介与本地生活App落地中,空间语义理解与POI权重机制直接决定线索质量与转化效率。本文深入拆解高德LBS能力边界与5

weixin_31155097的博客 321

基于Python开源爬虫框架Scrapy租房信息爬取与数据展示工具

摘要:时代在发展,技术在进步,互联网改变了全世界,各行各业都在这个互联网时代寻求自身的增长点,人们的日常生活也越来越离不开互联网。以租房为例,线下租房行业持续遭到冲击,越来越多的年轻人选择在互联网上挑选房源。本文以此为研究方向,设计并实现了一个基于python开源爬虫框架scrapy的租房信息爬取系统,爬取互联网上多个含有此数据的网站。以城市为区分,将多个站点的数据存入非结构化数据库,再以数据库为连接,开发出一个以python开源web框架Django的基础的租房数据展示系统。关键词:scrapy;

杨校的博客 698

毕业设计scrapy下的租房信息爬取与数据展示工具的设计与实现

本文实现了一个基于scrapy框架的租房信息爬取系统,一个基于Django的数据展示系统,较好的完成了前文分析中提出的各种要求。随着互联网的发展,越来越多的人,特别是年轻人选择在互联网上挑选租房,本系统将互联网上各大租房信息网站的租房信息集中起来,能在一定程度上帮助人们挑选更适合自己的出租房,具有一定的现实意义。在本系统的开发过程中,研究学习了如何使用scrapy、Django这两大框架,体会到了python语言的“极简至优美”,我接触到了这几个框架的前沿知识,对自己可以站在巨人的肩膀上兴奋不已。

m0_50936939的博客 1242

scrapy下的租房信息爬取与数据展示工具的设计与实现

本文实现了一个基于scrapy框架的租房信息爬取系统,一个基于Django的数据展示系统,较好的完成了前文分析中提出的各种要求。随着互联网的发展,越来越多的人,特别是年轻人选择在互联网上挑选租房,本系统将互联网上各大租房信息网站的租房信息集中起来,能在一定程度上帮助人们挑选更适合自己的出租房,具有一定的现实意义。在本系统的开发过程中,研究学习了如何使用scrapy、Django这两大框架,体会到了python语言的“极简至优美”,我接触到了这几个框架的前沿知识,对自己可以站在巨人的肩膀上兴奋不已。

qq_1406299528的博客 1986

springboot大学生在线租房平台

Java语言Java语言是目前最流行的语言之一,不仅可以做桌面窗口形式的程序,还可以做浏览器访问的程序,目前最流行的就是用Java语言作为基础,做各种程序的后台处理。Java语言是操作变量的语言,而变量则是Java对于数据存在形式的定义,变量用来操作内存,而内存则牵扯到计算机安全问题,这样Java语言反而有了免疫直接针对用Java语言开发出来的程序的病毒,有效的提高了Java语言开发出来程序的生存能力。

weixin_63982010的博客 685

基于php在线租房管理系统

完整开发源码建议从GitHub搜索相关开源项目作为基础进行二次开发,注意遵守各项目的开源协议。

495

基于scrapy下的租房信息爬取与数据展示工具的设计与实现

环境:python 3.6.0 Anaconda custom 64bit 4.3.0 Pycharm x64 专业版 2018.1.2 Web strom x64 专业版 2018.1.3 scrapy 1.3.3 MongoDB 3.6 Django 2.0.5 Semantic UI 2.2.4 chrome 56.0.2924.87 高德地图 API 1.4.6(2018.4.18) 首先安装Anaconda custom 64bit 4.3.0环境,再安装Pycharm x64 专业版 2018.

qq_1406299528的博客 795
上一篇: 为什么程序员不拿自己写的程序去卖,而要在公司领死工资呢?
下一篇: SpringBoot + Prometheus:打造高效监控系统
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值