今天给各位分享gis地图百度地图开发的知识,其中也会对百度地图是基于gis开发的吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
目录一览:
- 1、OpenLayers开发Gis地图
- 2、如何同时连接ArcGIS与百度地图Android SDK
- 3、基于GIS地图软件开发有哪些主项
- 4、android百度地图怎么开发
- 5、如何用gis实现百度地图的展示实例?
OpenLayers开发Gis地图
目前国内主要有以下三种坐标系:
WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
GCJ02:又称火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
添加微信好友, 获取更多信息
复制微信号
非中国地区地图,服务坐标统一使用WGS84坐标。
初始化一幅地图时,至少需要一个可视区域(view),一个或多个图层(layer),和一个地图加载的目标HTML标签(target)。
OpenLayers自带平移和缩放功能,我们也可以自己添加缩放
可以更改坐标投影和中心点来定位到中国
在初始化地图之后还可以再次添加图层
添加图层后可以控制图层的显示和隐藏
WMS地图服务发布好地图后,可以通过url传参params访问到相应的图层
矢量图层一般都是GeoJson格式的数据,可以直接加载在线的GeoJson数据
加载在线GeoJson需要提供url和format属性
或者加载本地json文件,需要提供features属性,通过readFeatures读取json文件
OpenLayers对矢量图层GeoJson中的要素有默认的样式,也可以覆写样式
如何同时连接ArcGIS与百度地图Android SDK
两个SDK都是将其API库封装成so动态链接库供上层应用(Java)调用,但两者在具体实现上存在差异,也是这个差异导致将两个SDK集成到一个应用中时容易产生强退的bug,这个问题也曾很大的困扰了我一天,特此分享给大家。
☆ 先看看百度地图 for Android SDK的动态库调用 *** :
之一步:在工程里新建libs文件夹,将开发包里的baidumapapi_v2_1_2.jar拷贝到libs根目录下,将libapp_BaiduMapApplib_v2_1_2.so和libvi_voslib.so 拷贝到libs\armeabi目录下(官网demo里已有这三个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
第二步:在工程属性-Java Build Path-Libraries中选择“Add External JARs”,选定baidumapapi_v2_1_2.jar,确定后返回。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
☆ 再看看ArcGIS for Android SDK的动态库调用 ***
其是通过在Eclipse集成开发环境上安装ArcGIS插件来实现的,具体如何安装就不赘述了。当 ArcGIS开发插件安装完成后,在新建工程的选项中就可以看到【ArcGIS Project for Android】和【ArcGIS Samples for Android】的菜单,ArcGIS Android API的开发环境就顺利配置完成了。
然后你可以New -- Project --ArcGIS Project for Android来新建一个带其动态链接库的Android应用程序。例如创建一个test工程,创建成功后如下图所示。本例采用最新的ArcGIS for Android SDK 10.1。
小结:以上两种 *** ,从用户便捷性上来说,ArcGIS 更加“智能”一些,将动态链接库添加的工作,直接已经集成到new project里面,对于初学者来说,可以完全忽略这些细节而直接进入关键开发工作;百度地图的SDK相对来说,更加灵活一些,给用户更大的空间。
但也就是这两种方式的差异导致了当两个SDK结合到一个程序里的时候就容易出错。细心的朋友应该可以发现一个问题,百度地图SDK里的动态链接库只有一个armeabi文件夹,但是ArcGIS SDK却有两个文件夹,armeabi和armeabi-v7a,其中均有一个libruntimecore_java.so库文件。
这两个文件夹是何用意呢?armeabi和armeabi-v7a是表示cpu的类型,不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。简单来说,Android为了适应五花八门各式各样的智能终端硬件环境,采用了不同的配置对应不同文件夹的调用模式,好比大家熟悉的不同屏幕dpi会调用不同的图片文件夹,如下图。
那么关键的来了,当我们严格按照两个SDK添加链接库后,百度地图三个so库文件就存放在armeabi文件夹下,而armeabi-v7a文件夹下并没有百度地图相应的so库,但ArcGIS却在两个文件夹下都有相应的so库,这里不得不说,Esri作为GIS、地图领域的世界领头羊,考虑的还是比较细。
然后编译程序时,Eclipse会在两个文件夹里搜索相应的库文件,而只会根据Android手机的具体情况拷贝相应文件夹下的库文件。当今绝大多数的手机已经具备了针对有浮点运算或高级扩展功能的arm cpu,所以在手机根目录下/data/data/(program_name)/lib下只会拷贝armeabi-v7a文件夹下的库文件,而此时并不会有百度地图的so库文件。从而会导致百度地图SDK程序直接崩溃,并报出java.lang.ExceptionInInitializerError错误。
明白了原理,解决办法就十分简单了,将armeabi文件夹下百度地图的so库文件拷贝到armeabi-v7a文件夹下,如下图:
重新clean一下project,重新编译后程序就可以正常调用百度地图和ArcGIS两个SDK库了。
基于GIS地图软件开发有哪些主项
目前国际上主流的gis软件是ESRI公司的软件,这是一个大的概念,它还包括桌面版的ArcGIS,其中包含若干个应用程序,比如ArcMap(用于配置二维工程地图,地图显示和打印输出用)、ArcGloble(配置三维工程地图的桌面程序)、ArcCatalog(用于图形数据的管理,类似于windows的文件管理器)、ArcReader(用于三维地图显示,功能比ArcGloble简单,不适合于大量数据)、ArcTool(一个工具集,用于批量数据处理等工作,非常强大和实用的工具箱);ESRI的开桌面版的开发包是ArcEngine; *** 版的开发包是ArcGIS Server。当前更高版本是9.3。ArcView是ESRI很早的一款地图软件,功能简单,开发包叫MO。现在已经不提供支持了。国内的重要的软件就是超图公司的SurperMap,但是我对这款软件就知道很有限了。其他软件有MapInfo(开发工具MapX)和我国地质大学的MapGIS软件(最近几年很少听到了),以及若干开源的软件。
android百度地图怎么开发
一、基本概念:
(一)、百度地图:
百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据, 构建功能丰富、交互性强的地图类应用程序。
百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制。您需申请密钥(key)后, 才可使用百度地图Android SDK。
(二)、LBS:(Location based Service)基于位置的服务
基于位置的服务,它是通过电信移动运营商的无线电通讯 *** (如G *** 网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在地理信息系统(外语缩写:GIS、外语全称:Geographic Information System)平台的支持下,为用户提供相应服务的一种增值业务。
二、百度地图使用步骤:【参照()】
(一)、HelloBaiduMap:
1、之一步:申请百度地图密钥(API_KEY):
2、第二步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
3、第三步:在AndroidManifest中添加开发密钥、所需权限等信息;
application
meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="P3G69b5s87YG5M31f8A7oyLW"/
/application
uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/
uses-permissionandroid:name="android.permission.USE_CREDENTIALS"/
uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/
uses-permissionandroid:name="android.permission.AUTHENTICATE_ACCOUNTS"/
uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/
uses-permissionandroid:name="android.permission.INTERNET"/
uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS"/
uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/
uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/
uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/
uses-permissionandroid:name="android.permission.BROADCAST_STICKY"/
uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/
uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
4、第四步:在布局文件中添加地图控件:
com.baidu.mapapi.map.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/
5、第五步:在应用程序创建时初始化 SDK引用的Context 全局变量:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该 *** 要再setContentView *** 之前实现
SDKInitializer.initialize(getApplicationContext());
// 装载布局文件
setContentView(R.layout.activity_main);
}
6、第六步:创建地图Activity,管理地图生命周期:
publicclass MainActivity extends Activity {
private MapView mapView;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该 *** 要再setContentView *** 之前实现
SDKInitializer.initialize(getApplicationContext());
// 装载布局文件
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
}
@Override
protectedvoid onResume() {
super.onResume();
mapView.onResume();
}
@Override
protectedvoid onPause() {
super.onPause();
mapView.onPause();
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
(二)、基础地图:
1、实现基础地图的操作步骤:
布局文件中使用MapView;
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化BaiduMap对象;
对MapView进行findViewById();
MapView对象调用getMap(),返回BaiduMap;
设置BaiduMap;
setMapType();
setTrafficEnabled();
(三)、POI搜索:
1、实现POI搜索的操作步骤:
布局文件中使用fragment,用来实现对BaiduMap的加载;
class="com.baidu.mapapi.map.SupportMapFragment"
当前Activity继承于FragementActivity;
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
备注:该两句话必须放在setContentView()之前。
初始化BaiduMap对象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch对象;
PoiSearch.newInstance();
给PoiSearch对象设置监听器;
setOnGetPoiSearchResultListener(),重写onGetPoiResult() *** ;
自定义PoiOverlay类,实现对每个标记的单击监听;
通过onPoiClick() *** ,获取每个PoiInfo中的信息。如果这个对象中包含有明细,可以打开一个新页面来展示兴趣点的详细介绍。
在AndroidManifest.xml文件中配置PlaceCaterActivity页面;
该页面是Baidu提供的POI的明细介绍页面。
PoiSearch对象调用searchInBound()、searchInCity() 、 searchNearby() *** 实现兴趣点查询。
【总结:】核心步骤:
实例化BaiduMap,PoiSearch对象;
PoiSearch对象设置OnGetPoiSearchResultListener()监听;
PoiSearch对象调用searchInCity() *** 触发监听。
(四)、线路规划:
1、实现路线规划的操作步骤:
布局文件中使用MapView,用来实现对BaiduMap的加载;
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化MapView;
调用findViewById()
初始化BaiduMap对象;
baiduMap = MapView对象.getMap();
初始化RoutePlanSearch对象;
RoutePlanSearch.newInstance();
给RoutePlanSearch对象设置监听器;
setOnGetRoutePlanResultListener(),重写onGetWalkingRouteResult()、onGetTransitRouteResult()、onGetDrivingRouteResult() *** ;
自定义三种RouteOverlay类(WalkingRouteOverlay、TransitRouteOverlay、DrivingRouteOvelray);
调用RoutePlanSearch对象的三种 *** (drivingSearch()、transitSearch()、walkingSearch())实现路线规划。
【总结:】核心步骤:
实例化BaiduMap,RoutePlanSearch对象;
RoutePlanSearch对象设置OnGetRoutePlanResultListener监听;
RoutePlanSearch对象调用drivingSearch()、transitSearch()、walkingSearch() *** 触发监听。
(五)、公交查询:
1、实现公交查询的操作步骤:
布局文件中使用fragment,用来实现对BaiduMap的加载;
class="com.baidu.mapapi.map.SupportMapFragment"
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
当前Activity继承于FragementActivity;
初始化BaiduMap对象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch对象/初始化BusLineSearch对象;
PoiSearch.newInstance();
BusLineSearch.newInstance();
给BusLineSearch对象设置监听器;
setOnGetBusLineSearchResultListener(),重写onGetBusLineResult() *** ;
给PoiSearch对象设置监听器;
setOnGetPoiSearchResultListener(),重写onGetPoiResult() *** ;
在这个监听器中调用BusLineSearch对象的searchBusLine() *** ;
给按钮增加单击监听事件,实现PoiSearch对象的searchInBound()、searchInCity() 、 searchNearby() *** 实现兴趣点查询。
【总结:】核心步骤:
实例化BaiduMap、PoiSearch对象及BusLineSearch对象;
PoiSearch对象设置OnGetPoiSearchResultListener()监听;BusLineSearch对象设置OnGetBusLineSearchResultListener监听;
在PoiSearch对象的监听回调 *** onGetPoiResult()中调用busLineSearch对象的searchBusLine() *** ;
PoiSearch对象调用searchInCity() *** 触发整个监听。
【备注:】
整体思路:先调用POI查询,在POI查询中的监听器中执行BusLine查询。
如何用gis实现百度地图的展示实例?
你如果要自己用Flex做的话,就要首先获取百度地图的瓦片服务的地址,要做路径查询的话还要获取百度地图路径分析服务的地址!现在是比赛的季节,ESRI联合天地图开放了地图服务接口,,你可以参考下,至于你说的那些什么标记,绘制都可以在Flex中用代码实现
关于gis地图百度地图开发和百度地图是基于gis开发的吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。