先确认数据来源,既然项目内使用高德地图,那就去找高德API好了,良久以后以为高德搜索服务API貌似能够搞一搞,竟然能够定位数据城市位置,那敢情好,赶忙先来一发试试。jquery
在浏览器地址栏直接敲入:
http://restapi.amap.com/v3/place/text?key=你本身的KEY&types=150700&city=410102&citylimit=true&offset=50&page=1
参数说明:ajax
key:本身去高德API注册帐号申请去,反正免费sql
types:查询类型,高德提供的POI分类编码表(以下图),150702表示公交车站,可是却查不到数据,只能用150700车站相关来搞数据了。数据库
POI分类编码表json
city:查询城市,高德有提供的城市编码表(以下图),410100表示郑州,0371也表示郑州,410102表示中原区api
城市编码表浏览器
citylimit:是否只返回指定城市数据(固然要true,我只要郑州市的数据,false表示优先城市可是依然不作范围限制)app
offset:每页条数,高德说最好不超过25(竟然还要翻页,好吧,毕竟是接口而不是专门让我抓数据用,我为啥写50,是由于就算你写再多他也给你强制50条,估计是为了性能考虑)异步
page:页数async
为何我不用市而是用区数据呢?这就是高德接口的意思啦~(你一次请求那么多干吗?是否是要搞事情?量这么大数据库不要抗压哇?)最多给你900条
郑州市数据
不用就不用呗,要是太简单了还写个毛线脚本,那就循环多请求几回好了,把郑州市的区都来一遍,嗯,不错,中原区数量还好,696个, 其余的也都很少
中原区数据
得,数据有了,仍是json格式的,直接用起来哇,搞起,直接放代码
var context ="";function snatch(){
var district = ["410102", "410103", "410104", "410105", "410106", "410108", "410122"];//循环多个区域 for (var k = 0; k < district.length; k++) {
var pagecount = 1;
var page = 1; //每一个区域数据须要翻页(API缘由) while(1==1) { $.ajax({url: "http://restapi.amap.com/v3/place/text?key=你本身的KEY&types=150700&city=" + district[k] + "&citylimit=true&output=json&offset=50&page=" + page,
async: false,
success: function (json) { //没有数据就跳出循环去找下个区 if (json.count != 0) { pagecount = Math.ceil(json.count / 49); } //拼接内容 for (var i = 0; i < json.pois.length; i++) {
var id = json.pois[i].id;
var name = json.pois[i].name;
var address = json.pois[i].address;
var location = json.pois[i].location; content += id + " " + name + " " + address + " " + location + "\r\n"; } } }); page++;
if(pagecount == page){
break; } } } download(); }
function download() {
var file = new File([content], "站点与线路数据.txt", {type: "text/plain;charset=utf-8"});
saveAs(file); }
逻辑应该算是比较严谨了,ajax里面async: false参数须要加上,表示不使用异步,若是不加的话for循环跑完了你ajax的数据还没跑完,后面剩余的次数就不执行了
数据我拿了“id,站点名称,该站有哪些线路,车站的坐标”四组数据,导出txt文档,而后导入数据库
(由于是纯JS脚本没有写数据库链接啥的,因此使用了FileSaver.js这个小插件来作导出txt,固然jquery.js也是要有的,否则ajax从哪来)
<script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script><script src="http://www.jq22.com/demo/FileSaver20161213/FileSaver.min.js"></script>
在网页上随便一转悠找了这俩js直接引入,这样连js下载啥的都省了,执行后10秒左右,数据已经有了
接下来就是把数据导入数据库了,新建了四个字段,而后用navicat直接导入到表中
导入txt
用“|”分隔符区分字段
数据绑定字段
完成数据
若是须要统计线路或者坐标经纬度分离啥的,能够对js数据格式调整或者用sql对导入后的数据进行调整,随你意喽、
不信就试一试、