高德API+.NET解决租房问题(JS相关)
在线地址:58同城品牌公寓高德搜房
Github地址:https://github.com/liguobao/58HouseSearch
知乎专栏(点赞用的):高德API+Python解决租房问题(.NET版)
经过了一个星期的修补补,以及小伙伴奉献的代码,整个项目基本处于基本稳定运行的状态。
同时加入了一下新功能:
- IP定位:调用高德地图IP定位功能实现
- 移动地图中心定位:调用高德地图移动地图定位实现
- 定位城市名转58同城城市名以获得准确58同城城市域名:抓取58同城城市分类信息
- 优化数据源、去除广告数据:小伙伴奉献代码
今天主要简单讲解一下其中使用的一些高德地图API接口。
#####高德地图JavaScript API 主体为map对象,基本所有的操作都是通过map对象来实现的。
map对象实例化是通过 Amap类来做的。如以下代码:
1 |
map = new AMap.Map("container", { |
IP定位
调用Map.CitySearch()获得当前IP所在城市,直接将地图显示成当前城市。代码如下:
1 |
function showCityInfo(map) { |
移动地图自动中心定位
之前有一版是让用户输入城市名,然后直接定位到输入的城市的。
这个功能卡在了设置地图显示位置上,如果是使用高德地图提供的搜索控件的话,又存在输入结果之后搜索结果可能是多个的问题。而且这点我只是要取到用户想要定位的城市而已,感觉没必要做得太复杂。
昨晚在看高德地图API的时候发现,有一个移动地图获得地图中心所在位置的样例,马上眼前一亮了。这个功能比我想要的还要好…果断上。
1 |
function MapMoveToLocationCity() |
整个代码的意思是,给map绑定一下移动时间,移动完了之后,调用getCity的方法获取当前地图中心所在城市信息。
这个时候要注意,城市名可能在city对象里面,也可能在province里面。
原因很简单:普通城市等级就是城市,我国还存在一个和省份一个等级的城市:直辖市。因此直辖市的城市名是在province里面的。
城市名匹配58同城地区域名
这个是上个版本(两三天前)的一个bug引出来的新功能。
上个版本是让用户输入城市名,然后提取城市名的中文拼音首字母作为58同城地区域名。如上海 =sh,广州=gz,北京=bj,成都=cd。
这个功能使用的是网上别人写的一个JS库,通过汉字匹配实现的。转换出来的数据没什么问题,不过我国汉字实在奥妙。
广州=gz,赣州=gz;
遂宁=sn;绥宁=sn;
惠州=hz,杭州=hz。
这样一来,上面这个做法就没法玩了。
想了下怎么解决这个问题,灵机一动。反正是在爬58的数据,这个城市名和城市域名数据58同城肯定有啊,然后找到了这个。
58同城城市分类导航
很明显,我要的所有城市名和城市域名都是里面了。
晚上和衣衣说了下,衣衣一大早就把处理好的json数据给我了。
于是来了下面一段代码:
1 |
//加载json文件 |
高德地图自动补全功能
1 |
<div class="control-input"> |
1 |
var auto = new AMap.Autocomplete({ |
看方法前面也知道,其实这就是把ID为work-location的input初始化为地图插件,然后给Amap增加了一个监听事件。
当其中选中某一个数据的时候,触发workLocationSelected函数。效果如下:
在这里locationSelected是定位到所选位置,代码如下:
1 |
function workLocationSelected(e) { |
至于导航功能代码我没怎么动,没去研究就不献丑了…
最后来个效果图。
####北京
####成都
####苏州
###深圳
高德API+.NET解决租房问题(JS相关)的更多相关文章
- 高德API+.NET解决租房问题(可能是最可靠房源:上海互助租房)
作者:李国宝链接:https://zhuanlan.zhihu.com/p/22113421来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. PS:最近点赞和关注的小伙伴 ...
- 高德API+Python解决租房问题(.NET版)
源码地址:https://github.com/liguobao/58HouseSearch 在线地址:58公寓高德搜房(全国版):http://codelover.link:8080/ 周末闲着无事 ...
- 高德 API+Python 解决租房问题
项目简介: 编写Python脚本爬取某租房网站的房源信息,利用高德的 js API 在地图上标出房源地点,划出距离工作地点1小时内可到达的范围,附上公交路径规划功能查看不同路径的用时. 一.介绍 1. ...
- 高德API+.NET解决租房问题(新增诚信房源)
作者:李国宝链接:https://zhuanlan.zhihu.com/p/22105008(欢迎点赞)来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 之前有小伙伴反应 ...
- c#两种方式调用google地球,调用COM API以及调用GEPLUGIN 与js交互,加载kml文件,dae文件。将二维高德地图覆盖到到三维谷歌地球表面。
网络上资源很多不全面,自己在开发的时候走了不少弯路,在这里整理了最全面的google全套开发,COM交互,web端交互.封装好了各种模块功能. 直接就可以调用. 第一种方式:调用COMAPI实现调用g ...
- js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间
*********************************************js相关********************************************* // 在指 ...
- nginx实现动态分离,解决css和js等图片加载问题
改帖专门为使用nginx,通过nginx把请求转发到web服务器再返回客户端的时候,解决css和js和图片加载不出来的问题. 如果没安装nginx,请访问一下地址进行安装 http://www.cnb ...
- 【前端知识体系-JS相关】ES6专题系列总结
1.如何搭建ES6的webpack开发环境? 安装Node环境 node -v // 10.14.1 安装NPM环境 npm -v // 6.4.1 安装babel npm install @babe ...
- 【高德API】如何利用MapKit开发全英文检索的iOS地图
原文:[高德API]如何利用MapKit开发全英文检索的iOS地图 制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧.告诉你,我有妙招!使用iOS自带的M ...
随机推荐
- Android(java)学习笔记5:线程的生命周期
1. 我们学习线程本质就是学习如何开始线程和终止线程.下面这个关于线程的生命周期图,要牢记: 新建状态:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态.此时和其他Java对象一样,它仅 ...
- bzoj 2179 FFT
求两个高精度的乘法. 根据高位低位,填入多项式的系数,求两个卷积,然后进位操作.
- ms17_010利用复现(32位)
准备阶段: 1,原版windows7:cn_windows_7_enterprise_x86_dvd_x15-70737.iso 2,kali系统, 虚拟机 3,用于32位机的攻击模块:Eterna ...
- maven学习记录三——maven整合ssh框架
6 整合ssh框架 6.1 依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 6.2 依赖版本冲突的解决 1. 第 ...
- 【luogu P1231 教辅的组成】 题解
题目链接:https://www.luogu.org/problemnew/show/P1231 对于每本书只能用一次,所以拆点再建边 #include <queue> #include ...
- 【Openjudge 9277 Logs Stacking堆木头】 题解
题目链接:http://noi.openjudge.cn/ch0206/9277/ ... #include <algorithm> #include <iostream> # ...
- javascript之Window 对象
一.说明:他是JS中最大的对象,它描述的是一个浏览器窗口,一般要引用他的属性和方法时,不需要用“Window.XXX”这种形式,而是直接使用“XXX”.一个框架页面也是一个窗口. 二.Window窗口 ...
- 【TOJ 5103】Electric Fence(皮克定理)
描述 In this problem, `lattice points' in the plane are points with integer coordinates. In order to c ...
- Mybatis中多个参数的问题&&动态SQL&&查询结果与类的对应
### 1. 抽象方法中多个参数的问题 在使用MyBatis时,接口中的抽象方法只允许有1个参数,如果有多个参数,例如: Integer updatePassword( Integer id, Str ...
- 2019年第十届蓝桥杯c++A组java/c++组题解
#include<iostream> #include<vector> using namespace std; vector <int > vec; long l ...