这次给大家带来地图搜租房功能实现,地图搜租房功能实现的注意事项有哪些,下面就是实战案例,一起来看一下。

layout: post

title: 半个小时教你写一个毕设之地图搜租房

category: 其他

date: 2018-05-23

tags:其他

半个小时教你写一个毕设之地图搜租房

首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客.

HTML部分代码来自:高德API+Python解决租房问题,简单改了下加载数据部分

代码路径:/static/index.html

毕业生租房

.control-panel {

position: absolute;

top: 30px;

right: 20px;

}

.control-entry {

width: 280px;

background-color: rgba(119, 136, 153, 0.8);

font-family: fantasy, sans-serif;

text-align: left;

color: white;

overflow: auto;

padding: 10px;

margin-bottom: 10px;

}

.control-input {

margin-left: 120px;

}

.control-input input[type="text"] {

width: 160px;

}

.control-panel label {

float: left;

width: 120px;

}

#transfer-panel {

position: absolute;

background-color: white;

max-height: 80%;

overflow-y: auto;

top: 30px;

left: 20px;

width: 250px;

}

选择工作地点:

选择通勤方式:

公交+地铁

地铁

var map = new AMap.Map("container", {

resizeEnable: true,

zoomEnable: true,

center: [116.397428, 39.90923],

zoom: 11

});

var scale = new AMap.Scale();

map.addControl(scale);

var arrivalRange = new AMap.ArrivalRange();

var x, y, t, vehicle = "SUBWAY,BUS";

var workAddress, workMarker;

var rentMarkerArray = [];

var polygonArray = [];

var amapTransfer;

var infoWindow = new AMap.InfoWindow({

offset: new AMap.Pixel(0, -30)

});

var auto = new AMap.Autocomplete({

input: "work-location"

});

AMap.event.addListener(auto, "select", workLocationSelected);

function takeBus(radio) {

vehicle = radio.value;

loadWorkLocation()

}

function takeSubway(radio) {

vehicle = radio.value;

loadWorkLocation()

}

function workLocationSelected(e) {

workAddress = e.poi.name;

loadWorkLocation();

}

function loadWorkMarker(x, y, locationName) {

workMarker = new AMap.Marker({

map: map,

title: locationName,

icon: 'http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png',

position: [x, y]

});

}

function loadWorkRange(x, y, t, color, v) {

arrivalRange.search([x, y], t, function(status, result) {

if (result.bounds) {

for (var i = 0; i < result.bounds.length; i++) {

var polygon = new AMap.Polygon({

map: map,

fillColor: color,

fillOpacity: "0.4",

strokeColor: color,

strokeOpacity: "0.8",

strokeWeight: 1

});

polygon.setPath(result.bounds[i]);

polygonArray.push(polygon);

}

}

}, {

policy: v

});

}

function addMarkerByAddress(address, url) {

var geocoder = new AMap.Geocoder({

city: "北京",

radius: 1000

});

geocoder.getLocation(address, function(status, result) {

if (status === "complete" && result.info === 'OK') {

var geocode = result.geocodes[0];

rentMarker = new AMap.Marker({

map: map,

title: address,

icon: 'http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png',

position: [geocode.location.getLng(), geocode.location.getLat()]

});

rentMarkerArray.push(rentMarker);

rentMarker.content = "

房源:" + address + "

"

rentMarker.on('click', function(e) {

infoWindow.setContent(e.target.content);

infoWindow.open(map, e.target.getPosition());

if (amapTransfer) amapTransfer.clear();

amapTransfer = new AMap.Transfer({

map: map,

policy: AMap.TransferPolicy.LEAST_TIME,

city: "北京市",

panel: 'transfer-panel'

});

amapTransfer.search([{

keyword: workAddress

}, {

keyword: address

}], function(status, result) {})

});

}

})

}

function delWorkLocation() {

if (polygonArray) map.remove(polygonArray);

if (workMarker) map.remove(workMarker);

polygonArray = [];

}

function delRentLocation() {

if (rentMarkerArray) map.remove(rentMarkerArray);

rentMarkerArray = [];

}

function loadWorkLocation() {

delWorkLocation();

var geocoder = new AMap.Geocoder({

city: "北京",

radius: 1000

});

geocoder.getLocation(workAddress, function(status, result) {

if (status === "complete" && result.info === 'OK') {

var geocode = result.geocodes[0];

x = geocode.location.getLng();

y = geocode.location.getLat();

loadWorkMarker(x, y);

loadWorkRange(x, y, 60, "#3f67a5", vehicle);

map.setZoomAndCenter(12, [x, y]);

}

})

}

$(function()

{

$.get("/get_houses", function(data) {

data.forEach(function(element, index) {

addMarkerByAddress(element.address, element.url);

});

});

})

Python flask部分

Python3环境,使用安装Flask,pymysql,BeautifulSouppip install Flask;

pip install pymysql;

pip install beautifulsoup4;

pip install requests;

然后直接上代码咯.

路径:/app.pyfrom flask import Flask, request

from flask import jsonify

from flask import render_template

from flask import Response

import requests

from bs4 import BeautifulSoup

import pymysql

app = Flask(name)

@app.route("/get_houses_db/")

def get_houses_db():

# 从数据库读出来的数据,url为房源url,address为房源定位地址

houses = []

# Connect to the database

connection = pymysql.connect(host='127.0.0.1',

user='root',

password='123',

db='你的数据库名字',

charset='utf8mb4',

cursorclass=pymysql.cursors.DictCursor)

try:

with connection.cursor() as cursor:

# Read a single record

sql = "SELECT 你的URL字段,你的地址字段 FROM 你的房源数据表 where 1=1;"

keyword = request.args.get('keyword')

if keyword is not None:

sql = sql + "查询字段 like %%s%" % keyword

cursor.execute(sql)

houses = cursor.fetchall()

finally:

connection.close()

return jsonify(houses)

@app.route("/get_houses", methods=['POST', 'GET'])

def get_houses():

# 直接从网页获取数据,url为房源url,address为房源定位地址

houses = []

city = request.args.get('city')

if city is None:

city = 'bj'

city_url = 'http://%s.58.com' % city

for page_num in range(1, 10):

url = "%s/pinpaigongyu/pn/%d/" % (city_url, page_num)

headers = {

'connection': "keep-alive",

'upgrade-insecure-requests': "1",

'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",

'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",

'accept-encoding': "gzip, deflate",

'accept-language': "zh-CN,zh;q=0.9,en;q=0.8,da;q=0.7",

'cookie': "f=n; f=n; id58=c5/njVsEqPqC7y9vB/RHAg==; 58tj_uuid=ac94c044-cbb8-451c-b6be-974f90197010; new_uv=1; utm_source=; spm=; init_refer=https%253A%252F%252Fcn.bing.com%252F; als=0; f=n; new_session=0; qz_gdt=; Hm_lvt_dcee4f66df28844222ef0479976aabf1=1527032264,1527032267,1527032270,1527032380; Hm_lpvt_dcee4f66df28844222ef0479976aabf1=1527032421; ppStore_fingerprint=3283C76981CCD1090B42ACBBF624A4C9613FE967CDC69C58%EF%BC%BF1527032420843",

'cache-control': "no-cache",

}

response = requests.request("GET", url, headers=headers)

htmlSoup = BeautifulSoup(response.text, "html.parser")

ul = htmlSoup.find(attrs={"class": "list"})

if ul is None:

continue

li_list = ul.find_all("li")

if li_list is None:

continue

for li in li_list:

house = {}

house['url'] = '%s/%s' % (city_url, li.find("a")['href'])

house['address'] = li.find("h2").text

houses.append(house)

return jsonify(houses)

@app.route('/')

def index():

return app.send_static_file('index.html')

if name == 'main':

app.run(port=8888)

# python3 安装flask之后,安装命令pip install Flask

# 运行 python app.py

效果图:

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

php地图找房代码,地图搜租房功能实现相关推荐

  1. Java开发导入腾讯地图描点_腾讯地图点聚合开发-实现地图找房功能

    链家实现的效果 分析 链家的地图找房主要分为三层.第一层为市区层,比如南山.罗湖等:第二层为片区,比如南头.科技园等:第三层则为小区. 因为第一层,第二层的数据没有那么多,这两个接口都是把所有的数据一 ...

  2. 腾讯地图实现地图找房功能

    链家实现的效果 最近接到一个需求,需要使用鹅厂地图实现类似链家网的地图找房功能,然后我去网上看了一下,基本上使用的都是百度地图.于是我打算自己稍微封装一下,可以在使用的时候更加的方便. 01. 分析 ...

  3. 腾讯地图点聚合应用之地图找房

    链家实现的效果 分析 地图找房功能使用点聚合来实现的.官网示例如下:https://lbs.qq.com/javascript_v2/sample/overlay-markercluster.html ...

  4. python + 高德地图API实现地图找房

    python + 高德地图API实现地图找房 项目简介:根据工作地点信息和58同城爬取的租房信息,通过高德地图进行显示,同时利用高德API自动规划房源到工作地点的通勤路线(公交+地铁) 项目仓库:ht ...

  5. 百度地图——地图找房功能

            代码地址:https://github.com/huiyan-fe/BMapGLLib  HouseSearchService层 package cn.itcast.baidumap. ...

  6. java地图完整项目-地图找房(基于百度地图-MongoDB)

    1.BMapGLLib库 网址: GitHub - huiyan-fe/BMapGLLib: 百度地图JSAPI GL版JavaScript开源工具库 该库相关辅助功能可通过点击上述网址进行查看! 2 ...

  7. 仿链家地图找房_全网稀缺,完整链家地图找房的实现(一)

    前一段时间我应公司的需求开发了类似链家地图找房的功能,然而我发现现在市面上,对于链家地图找房功能的完整实现相关的文章还是比较稀缺的,亦或是功能还不够完善,出于这个方面,我觉得把自己对于链家地图找房功能 ...

  8. 使用vue和高德地图,仿58地图找房pc端,且解决marker过多卡顿

    使用vue和高德地图,仿58地图找房pc端,且解决marker过多卡顿 1.在index.html引入高德地图链接 https://webapi.amap.com/maps?v=1.4.15& ...

  9. 仿链家地图找房的简单实现 1

    本篇目录: 使用入门 简单使用流程 链家地图找房效果 区域点位气泡 数据结构 实现 addOverlay方法 区域边界 获取区域点位经纬度 获取区域边界 小结 最近由于项目需要,开始调研如何使用百度地 ...

最新文章

  1. 菜鸟也来学习ORACLE(1)_linux下安装oracle 11g
  2. c# Brush、Color、String相互转换
  3. Java 8实现BASE64编解码
  4. myeclipse 10.7 for linux激活
  5. 转《针对不同版本的ie调用不同css样式》
  6. Apache HttpServer与Tomcat7集群Linux版
  7. 阿里云如何打破Oracle迁移上云的壁垒
  8. 速达软件无法打开帐套数据库/一般性网络错误
  9. 达梦数据库可视化管理工具的配置
  10. c语言中十六进制可以直接和十进制运算吗,C语言 · 十六进制转十进制
  11. c++string 加引号_Shell 引号嵌套
  12. 爬取图片,并按比例划分数据集
  13. PHP事务数据库写法,PHP 操作 MySQL 执行数据库事务
  14. postman批量发送请求小记
  15. 英语学习笔记——语法篇(持续更新)
  16. Python 浮点数计算 小数取舍指南
  17. Android tips(十二)--Android开发中使用矢量图
  18. 卸载MATLAB7.0
  19. 报计算机专业高考必考科目,不能错过的重点!新高考选科:名校专业必选的那些科目!...
  20. 机场精细化管理_【青海机场公司召开“强化‘三基’固根本 精益管理促发展”主题交流会议】...

热门文章

  1. python xls 转化 xlsx
  2. 2019 Java 全栈工程师进阶路线图,一定要收藏
  3. cve20190708补丁的kb名称_微软远程桌面漏洞修复补丁下载|
  4. 微信企业号和微信公众号使用js-sdk说明和注意事项
  5. 什么是正态分布?二八法则又是什么?
  6. 关于vscode中出现gopls was not able to find modules in your workspace报错的解决方案
  7. 程序员作死手册:我们是怎样弄丢1400万条日志记录的
  8. OpenHarmony(鸿蒙)操作系统
  9. android 判断 音乐是否播放,Android如何判断当前手机是否正在播放音乐并获取有关正在播放的音乐的信息...
  10. C++之char , signed char , unsigned char(转)