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

转自原文 支持WEB、Android、IOS的地图解决方案

工具链

GIS工具集
  1. OpenGeo Suite
    包含PostGIS, GeoServer, GeoWebCache, OpenLayers, 和 QGIS
地图准备
  1. QGIS
    导入、导出、编辑.shp,postgis,geotiff,geojson,dxf等多种GIS文件,给普通图片配准到地理坐标
    教程:http://www.qgistutorials.com/en/
  2. DraftSight
    编辑CAD文件
  3. SketchUp   从CAD文件生成3D视图
地图服务
  1. GeoServer
    地图服务发布。作为war放入Tomcat或Jetty即可使用。可发布geotiff,.shp,POSTGIS等多种GIS数据为地图。通过openlayer或QGIS浏览。
  2. GeoWebCache
    缓存地图瓦片,提高性能。已内置在最新版GeoServer中。
  3. TileStream
    把.mbtile文件发布为地图服务
离线地图打包
  1. TileMill
    将geotiff,geojson,csv,shp,postgis等文件美化、打包为.mbtile瓦片地图文件,存有地图信息的sqlite文件。
    教程:https://www.mapbox.com/tilemill/docs/crashcourse/introduction/
  2. mbutil
    将.mbtile文件分解为普通图片和json文件
地图浏览
  1. Mapbox.js
    在浏览器中显示TMS地图(Javascript)。基于Leaflet。可配合TileSteam使用。Example:https://www.mapbox.com/mapbox.js/example/v1.0.0/
  2. Mapbox IOS SDK
    在IOS设备中显示TMS或.mbtile地图,基于Route-Me
  3. Mapbox Android SDK
    在Android设备中显示TMS或.mbtile地图,基于osmdroid
    例程://depot/research/mapstudy/tstmapbox/
  4. OsmDroid
    在Android设备中显示TMS或.mbtile地图
    例程://depot/research/mapstudy/tstosmdroid/
  5. osmbonuspack
    为OsmDroid增加显示POI等功能
    例程://depot/research/mapstudy/tstosmbonuspack/
  6. Leaflet
    在浏览器中显示TMS地图(Javascript)。
  7. OpenLayers
    在浏览器中显示TMS、WMS地图(Javascript)。比Leaflet功能强大复杂。
  8. Indoor.js
    Indoor 工具集,基于OpenSteetMap,TileMill,Leaflet。 目前尚不稳定。
  9. d3.js
    Javascript数据显示工具
工具链关系图

离线地图制作举例

假设输入为DWG,若原图为位图(JPG/PNG),直接跳到第5步

在SketchUp中导入DWG。并用Make Faces 插件(YouTube)生成面

在SketchUp中拉伸为3D模型

导出,如果用render渲染更好

打开QGIS,"栅格"->配准工具。左边第一个图标打开底图。点击黄色齿轮。设置输出为base.tif。 目标空间参照系统为EPSG:3857. 勾选“完成时载入到QGIS”

在图上任点2点。在弹出框内输入该点坐标值。输入像素坐标即可。

点第二个图标完成配准。

添加一个矢量图层描述信标,类型为“点”,新建属性ccode,类型为整数(信标内容码)。新建属性name,类型为字符串。

点击黄色小铅笔到编辑模式,再点击 * 图标,在图上点击要增加信标的位置。添加3个点,id和ccode分别为1,2,3。再次点击黄色小铅笔退出编辑模式。

添加一个矢量图层描述信标,类型为“多边形”,新建属性name,类型为字符串.

点击黄色小铅笔到编辑模式,再点击 * 图标,在图上勾出围栏区域。并分别命名。

右键位图图层,另存为GeoTiff

右键矢量图层。另存为GeoJson

打开TileMill,Project-->New project

Layers-->Add Layer, 选择刚才导出的base.tif,SRS选择900913. “Save & Style” 。点击图层#base上得放大镜缩放到合适大小。

删除Contries图层和相应的mss。把background-color改为和底图一致

"+ Add Layer" 添加刚才导出的2个geojson文件

选择左侧手指==>Teaser.下面图层选择为hotarea.上面内容框中填入{{{name}}}

Save以后。可以看到热区效果。 当鼠标移到热区时。相应的name会显示。

将polygon-opacity,line-opacity和marker-opacity设为0。点击Export导出mbtiles. 放大图片到zoom 16级,把中心标志放到图中央。shift+鼠标拖动框选地图区域。点击 Export导出为文件。在~/Documents/MapBox/export中可以找到导出的example.mbtiles文件

启动地图服务。在terminal中执行 tilestream --tiles=/Users/fangjian/Documents/MapBox/export 然后访问http://localhost:8888/ 可以看到地图已经生效。访问 http://localhost:8888/v2/example.json 可以下载tilejson. 访问 http://localhost:8888/v2/example.mbtiles可以下载mbtiles文件。 如果只制作离线地图可以跳过这步。

解包example.mbtiles为普通图片和json文件.在.mbtiles所在目录。运行mb-util example.mbtile example
图片文件被解到了example目录下

复制metadata.json为tile.json 改为example.json的格式 。将center和bounds改为数组(如果只做离线文件可以跳过)

参考metadata.json 修改 https://www.mapbox.com/mapbox.js/example/v1.0.0/ 样例

<script>
var map = L.mapbox.map(‘map‘);
var stamenLayer = L.tileLayer(‘./{z}/{x}/{y}.png‘, {
  attribution: ‘Map tiles by <a href="http://dreamvoc.com">DreamVoc</a>.‘,
  minZoom:14,
  maxZoom:17
}).addTo(map);
map.setView([-0.0047,0.0075], 16);
</script>

拷贝ccode.geojson和hotarea.geojson到当前目录。编辑文件内容为var ccode={... var hotarea={...map.featureLayer.setGeoJSON(ccode); 然后加入以下代码

<script src="ccode.geojson" ></script>
<script src="hotarea.geojson" ></script>
<script>
map.featureLayer.setGeoJSON(ccode);
</script>
<script>
L.geoJson(hotarea).addTo(map);
</script>

加入热区参考文章 http://leafletjs.com/examples/choropleth.html

原文地址:https://www.cnblogs.com/arxive/p/8416671.html

时间: 2024-10-09 11:33:20

支持WEB、Android、IOS的地图解决方案的相关文章

改变mvc web api 支持android ,ios ,ajax等方式跨域调用

公司一个移动后端的项目用到了 webapi 项目搭建到外网环境共app开发者调用测试接口时遇到了一个问题 接口不允许跨域调用 .查阅资料明白 同源策略原则根据请求报头值 Origin 与回应报头值 Access-Control-Allow-Origin 来判断是否允许调用 解决方法 1.ajax使用jsonp jsonp 是通过请求参数中加入回调函数参数值.webapi 收到回调函数参数值返回数据不再是单纯的json,而是根据回调函数参数值 的js方法调用,这样就避免的同源策略 需要webapi

iOS 百度地图报私有api的解决方案

1.Build Settings-->搜索other linker Flags-->将other linker Flags设置为-objc 2.用2.1.1的版本的百度地图 3.换高德地图 iOS 百度地图报私有api的解决方案

[翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信

English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communication/ Nativescript 中 Web 视图与 Android/IOS 的双向通信 由shripal编写 在Nativescript中 Nativescript 提供跨平台的 web 视图 ui 元素.它为在我们的页面中显示 web 视图内容提供了服务.但是, 如果您希望将一些数据发送

mobile web retina 下 1px 边框解决方案

http://www.tuicool.com/articles/ZRv6bun 再谈mobile web retina 下 1px 边框解决方案 时间 2015-01-03 12:03:31  Hugo Web前端开发 原文  http://www.ghugo.com/css-retina-hairline/ 主题 WebKitiOSCSS 本文实际上想说的是ios8下 1px解决方案. 1px的边框在devicePixelRatio = 2的retina屏下会显示成2px,在iphone 6

Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 回顾:Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上) 连接网络摄像头 正如上文所提,我们选用一款简单的D-Link DCS-7010L网络摄像头.关键原因在于它支持RTSP协议,因此服务

[IOS_HTML5]各种JS框架介绍--用HTML5/CSS3/JS开发Android/IOS应用

现在人人都想成为安卓/IOS应用开发工程师.其实,安卓/IOS应用可以用很多种语言来实现.由于我们前端开发工程师,对HTML5/CSS/JavaScript的网络编程已经相当熟悉了.所以,今天大家将会认识到一些利用前端语言来开发安卓/IOS应用的工具. 在文章的末尾,也介绍了使用JAVA.C#.Lua以及AS3来开发安卓应用的工具. 希望大家都能找到适合自己的开发工具!祝大家开发安卓/IOS应用一切顺利! PhoneGap 开发语言: HTML, CSS, JavaScript 开发工具: Ph

Xamarin.Android 使用百度地图获取定位信息

最近做一个项目,web端使用百度地图,PDA使用手持机自带的GPS定位系统获取经纬度,然后再百度地图上显示该经纬度会有一定距离的差异,这里就像可乐的瓶子拧上雪碧的盖子,能拧的上却不美观.所以为了数据的精确性,PDA端也用百度地图的接口. 下面主要流程分为以下几步: 新建项目BaiduMapAPIDemo. 下载百度地图 --Android定位SDK . Binging Labrary项目添加相关文件. 注册百度开发平台,创建应用,获取AK. 写入百度提供示例代码. 查看输出结果. 第一步:新建项

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

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

Android studio 百度地图开发(5)查询周边服务(加油站)

email:[email protected] 开发环境:win7 64位,Android Studio,请注意是Android Studio,使用的导航SDK版本:3.1.0. 百度地图应用(1):Android studio 百度地图开发(1)配置工程.显示地图 百度地图应用(2):Android studio 百度地图开发(2)地图定位 百度地图应用(3):Android studio 百度地图开发(3)地图导航 百度地图应用(4):Android studio 百度地图开发(4)触摸选点