离线地图解决方案(七):地图地物搜索

离线地图发布的“底图”都是各大地图厂商的“瓦片”或者利用geoserver生成的瓦片数据,这些瓦片数据都是一些jpg或者png格式的图片,很多GIS应用中,用户除地图显示,地图添加地物外,也需要用关键字搜索地物。

普遍的做法是,部署geoserver发布矢量数据,采用wfs服务查询到数据,并且在前端展示。或者调用在线地图的搜索接口返回数据在前端显示。这两种方式,就跟原本的离线地图和轻量级GIS应用背道而驰。

可以采取一种简便的做法,将地图矢量数据存入轻量级数据库Sqllite,通过查询数据库,对外提供查询接口的方式,解决地图“搜索”的业务需求。

Sqllite数据库存储矢量数据:

如上图所示,将地图点、线、面数据存入sqllite数据库

“搜索”接口服务发布:

调用搜索接口前端展示搜索结果:

代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<style>

html, body {

width: 100%;

height: 100%;

overflow: hidden;

margin: 0;

font-family: "微软雅黑";

}

</style>

<script src="js/jquery-1.11.2.min.js" type="text/javascript"></script>

<script type="text/javascript" src="plugin/ol3/build/ol-debug.js"></script>

<script type="text/javascript" src="js/Config.js"></script>

<script type="text/javascript" src="js/PrivateFunction.js"></script>

</head>

<body>

<div id="topHead" style=" height:65px; float:none;width:100%;border:0px solid gray">

<table id="bjTable" style="height:100%;width:100%;">

<tr>

<td style="width:120px">请输入关键字:</td>

<td style="width:150px"><input id="txtsearchName"/></td>

<td style="width:100px"><button style="width:100px" onclick="GetServerData()">搜索</button></td>

<td></td>

</tr>

</table>

</div>

<div id="div_gis" style="float:none;width:100%;height:100%;border:1px solid gray">

</div>

</body>

</html>

<script type="text/javascript">

LoadGoogleTileMap(1, ‘div_gis‘, 1, 12, 8, 103.964571, 30.245677);

CreateVectorLayer();

function GetServerData() {

$.ajax({

url: ‘http://localhost:8899/api/ReverseGEOApi/SearchPoint‘, //请求地址

type: ‘Get‘,  //请求方式为post

data: { ‘param‘: txtsearchName.value,‘pointCount‘:5 }, //传入参数

dataType: ‘json‘, //返回数据格式

//请求成功完成后要执行的方法

success: showDataCallBack,

error: function (err) {

alert("执行失败");

}

});

}

function showDataCallBack(data) {

for (var i=0;i<data.data.length;i++)

{

addPoint(data.data[i].PnameTemp, i + 1, data.data[i]NaN.X, data.data[i]NaN.Y);

}

}

function addPoint(nameStr, id, xx, yy) {

var pointStyle = CreatePointStyle(‘#ff0000‘, ‘10‘, ‘#ff0000‘, ‘2‘, nameStr, ‘center‘, ‘middle‘, ‘Arial‘, ‘14‘, ‘normal‘, ‘#aa3300‘, ‘#ffcc33‘, ‘2‘, ‘0‘, ‘15‘, ‘0‘);

AddPointToLayer(tempDrawSoure, id, xx, yy, pointStyle);

}

</script>

				
时间: 2024-08-09 19:53:41

离线地图解决方案(七):地图地物搜索的相关文章

离线地图解决方案

目前GIS系统的开发,大多采用Arcgis,superMap等专业的gis开发平台.部分项目采用当前主流的在线地图提供的api进行开发.Arcgis.supermap等专业厂商提供的开发平台,开发周期长,并且购买这些开发平台,成本相对很高.采用在线地图api进行项目开发,在部分不能上外网的单位项目没办法进行部署和使用.并且采用在线地图api进行开发,需要申请地图调用的所谓key.部分接口和api每天有调用次数限制. 大部分的GIS项目,其实只需要比较简单的GIS功能,如地图基本显示,在显示的地图

离线地图解决方案(八):地图地物查询

续上一篇,用户除有地物搜索(任意输入关键字,查询包含该关键字的地物)外,也有精确查询的需求,如查询指定经纬度周边一定范围内的地物,通过地图上框选矩形或者多边形,查询矩形或者多边形内的地物等. 范围查询:查询指定经纬度周边一定距离内的地物,效果如下图所示: 矩形框选查询:查询包含在指定矩形内的地物 多边形框选查询:在地图上绘制多边形,并查询包含在多边形内的地物 代码: <!DOCTYPE html> <html> <head>     <meta charset=&

离线地图解决方案(十):最短路径规划

最短路径规划,采用开源数据库postgres.开源路径分析项目pgRouting进行. pgRouting是一个基于PostgreSQL/PostGIS的项目,目的是提供路径分析的功能. 基于postgres和pgrouting实现路径规划功能,大致分为以下几个步骤: 1.矢量路网数据导入 2.为矢量路网数据添加字段并构建拓扑关系 3.编写两点间路径规划函数 4.对外发布两点间路径规划接口 5.前端展示路径规划结果 Postgres和pgRouting的安装以及矢量数据的导入,请参看本博客相关文

百度谷歌离线地图解决方案(离线地图下载)

离线地图解决方案,除了买地图数据,使用专业的ArcGIS来做外,也可以使用GMap.Net来做. 关于GMap的开发教程,可以看我以前的文章:基于GMap.Net的地图解决方案 使用了GMap一年了,也有了一些积累,开发了一个可以下载百度.谷歌.高德.腾讯SOSO的地图下载器,各个地图加载显示如下: 百度普通地图: 百度混合地图: 谷歌普通地图: 谷歌混合地图: 从目前的情况来看,百度的普通的地图数据是更新最快的,但是有些小地方没有卫星地图,而谷歌几乎所有的地方都有卫星地图,但是谷歌中国的地图更

离线地图解决方案(六):地图坐标“纠偏”

国内主流的在线地图服务和接口,应国家相关部门的要求,在发布地图是都进行了坐标偏移.现在web在线地图主要的坐标系有WGS84.GCJ-02.BD-09三种,WGS84原始坐标,未经过偏移,大部分GPS设备和矢量数据都采用这种坐标系.在线地图中google地图(国外)和天地图在线地图未经过偏移.GCJ-02坐标:高德.腾讯以及google国内在线地图采用这种坐标,BD-09是百度地图独有的坐标系,在GCJ-02基础上做了二次偏移. 在离线地图做加载瓦片数据后,如果要在这些"底图"上用坐标

离线地图解决方案(一):加载瓦片地图

当前主流的在线地图有百度.高德.天地图.腾讯地图.google地图等.针对局域网内网内脱离要脱离互联网访问的应用,需要下载这些主流厂商的瓦片数据.网上有很多地图下载器软件可以下载地图瓦片,可以通过各种方式获取到这些地图厂商的瓦片数据. 加载高德离线瓦片数据: 加载高德街道瓦片: 地图加载代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm

支持WEB、Android、IOS的地图解决方案

转自原文 支持WEB.Android.IOS的地图解决方案 工具链 GIS工具集 OpenGeo Suite 包含PostGIS, GeoServer, GeoWebCache, OpenLayers, 和 QGIS 地图准备 QGIS 导入.导出.编辑.shp,postgis,geotiff,geojson,dxf等多种GIS文件,给普通图片配准到地理坐标 教程:http://www.qgistutorials.com/en/ DraftSight 编辑CAD文件 SketchUp   从CA

微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

原创声明:本文来源于本人另一博客[微信JS-SDK之地理位置的获取,集成百度地图实现在线地图搜索]原创作品,绝非他处摘取,转载请联系博主 本次讲解微信开发第三篇:获取用户地址位置信息,是非常常用的功能,特别是服务行业公众号,尤为需要该功能,本次讲解的就是如何调用微信JS-SDK接口,获取用户位置信息,并结合百度地铁,实现在线地图搜索,与在线导航. 官方文档地址:https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.htm

iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)

百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包 注:不需要使用地图功能的可以不用boundle包,模拟器使用的framework和真机不一样具体看官网 2.info.plist中 3.在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC. 4.将一个文件设置为.mm 百度地图使用 1.AppDelegate中注册 _mapManager

百度地图、高德地图的数据从哪里得到的?[声明我只是此文章的搬运工,从百度知道复制来的]

要说数据来源,首先得对地图数据做一个分类,因为不同分类的数据,其来源,采集方法都是有大不同的. 要明白地图的数据分类,必须先理解一个概念,就是地图图层的概念: 如上图,电子地图对我们实际空间的表达,事实上是通过不同的图层去描述,然后通过图层叠加显示来进行表达的过程. 对于我们地图应用目标的不同,叠加的图层也是不同的,用以展示我们针对目标所需要信息内容. 其次呢,我引入一下矢量模型和栅格模型的概念,GIS(电子地图)采用两种不同的数学模型来对现实世界进行模拟: 矢量模型:同多X,Y(或者X,Y,Z