今天給各位分享gis地圖百度地圖開發(fā)的知識(shí),其中也會(huì)對百度地圖是基于gis開發(fā)的嗎進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
目錄一覽:
- 1、OpenLayers開發(fā)Gis地圖
- 2、如何同時(shí)連接ArcGIS與百度地圖Android SDK
- 3、基于GIS地圖軟件開發(fā)有哪些主項(xiàng)
- 4、android百度地圖怎么開發(fā)
- 5、如何用gis實(shí)現(xiàn)百度地圖的展示實(shí)例?
OpenLayers開發(fā)Gis地圖
目前國內(nèi)主要有以下三種坐標(biāo)系:
WGS84:為一種大地坐標(biāo)系,也是目前廣泛使用的GPS全球衛(wèi)星定位系統(tǒng)使用的坐標(biāo)系。
GCJ02:又稱火星坐標(biāo)系,是由中國國家測繪局制訂的地理信息系統(tǒng)的坐標(biāo)系統(tǒng)。由WGS84坐標(biāo)系經(jīng)加密后的坐標(biāo)系。
BD09:為百度坐標(biāo)系,在GCJ02坐標(biāo)系基礎(chǔ)上再次加密。其中bd09ll表示百度經(jīng)緯度坐標(biāo),bd09mc表示百度墨卡托米制坐標(biāo)。
添加微信好友, 獲取更多信息
復(fù)制微信號(hào)
非中國地區(qū)地圖,服務(wù)坐標(biāo)統(tǒng)一使用WGS84坐標(biāo)。
初始化一幅地圖時(shí),至少需要一個(gè)可視區(qū)域(view),一個(gè)或多個(gè)圖層(layer),和一個(gè)地圖加載的目標(biāo)HTML標(biāo)簽(target)。
OpenLayers自帶平移和縮放功能,我們也可以自己添加縮放
可以更改坐標(biāo)投影和中心點(diǎn)來定位到中國
在初始化地圖之后還可以再次添加圖層
添加圖層后可以控制圖層的顯示和隱藏
WMS地圖服務(wù)發(fā)布好地圖后,可以通過url傳參params訪問到相應(yīng)的圖層
矢量圖層一般都是GeoJson格式的數(shù)據(jù),可以直接加載在線的GeoJson數(shù)據(jù)
加載在線GeoJson需要提供url和format屬性
或者加載本地json文件,需要提供features屬性,通過readFeatures讀取json文件
OpenLayers對矢量圖層GeoJson中的要素有默認(rèn)的樣式,也可以覆寫樣式
如何同時(shí)連接ArcGIS與百度地圖Android SDK
兩個(gè)SDK都是將其API庫封裝成so動(dòng)態(tài)鏈接庫供上層應(yīng)用(Java)調(diào)用,但兩者在具體實(shí)現(xiàn)上存在差異,也是這個(gè)差異導(dǎo)致將兩個(gè)SDK集成到一個(gè)應(yīng)用中時(shí)容易產(chǎn)生強(qiáng)退的bug,這個(gè)問題也曾很大的困擾了我一天,特此分享給大家。
☆ 先看看百度地圖 for Android SDK的動(dòng)態(tài)庫調(diào)用 *** :
之一步:在工程里新建libs文件夾,將開發(fā)包里的baidumapapi_v2_1_2.jar拷貝到libs根目錄下,將libapp_BaiduMapApplib_v2_1_2.so和libvi_voslib.so 拷貝到libs\armeabi目錄下(官網(wǎng)demo里已有這三個(gè)文件,如果要集成到自己的工程里,就需要自己添加),拷貝完成后的工程目錄如下圖所示;
注:liblocSDK3.so和locSDK_3.1.jar為百度定位SDK所使用資源,開發(fā)者可根據(jù)實(shí)際需求自行添加。
第二步:在工程屬性-Java Build Path-Libraries中選擇“Add External JARs”,選定baidumapapi_v2_1_2.jar,確定后返回。
通過以上兩步操作后,您就可以正常使用百度地圖SDK為您提供的全部功能了。
☆ 再看看ArcGIS for Android SDK的動(dòng)態(tài)庫調(diào)用 ***
其是通過在Eclipse集成開發(fā)環(huán)境上安裝ArcGIS插件來實(shí)現(xiàn)的,具體如何安裝就不贅述了。當(dāng) ArcGIS開發(fā)插件安裝完成后,在新建工程的選項(xiàng)中就可以看到【ArcGIS Project for Android】和【ArcGIS Samples for Android】的菜單,ArcGIS Android API的開發(fā)環(huán)境就順利配置完成了。
然后你可以New -- Project --ArcGIS Project for Android來新建一個(gè)帶其動(dòng)態(tài)鏈接庫的Android應(yīng)用程序。例如創(chuàng)建一個(gè)test工程,創(chuàng)建成功后如下圖所示。本例采用最新的ArcGIS for Android SDK 10.1。
小結(jié):以上兩種 *** ,從用戶便捷性上來說,ArcGIS 更加“智能”一些,將動(dòng)態(tài)鏈接庫添加的工作,直接已經(jīng)集成到new project里面,對于初學(xué)者來說,可以完全忽略這些細(xì)節(jié)而直接進(jìn)入關(guān)鍵開發(fā)工作;百度地圖的SDK相對來說,更加靈活一些,給用戶更大的空間。
但也就是這兩種方式的差異導(dǎo)致了當(dāng)兩個(gè)SDK結(jié)合到一個(gè)程序里的時(shí)候就容易出錯(cuò)。細(xì)心的朋友應(yīng)該可以發(fā)現(xiàn)一個(gè)問題,百度地圖SDK里的動(dòng)態(tài)鏈接庫只有一個(gè)armeabi文件夾,但是ArcGIS SDK卻有兩個(gè)文件夾,armeabi和armeabi-v7a,其中均有一個(gè)libruntimecore_java.so庫文件。
這兩個(gè)文件夾是何用意呢?armeabi和armeabi-v7a是表示cpu的類型,不同的cpu的特性不一樣,armeabi就是針對普通的或舊的arm cpu,armeabi-v7a是針對有浮點(diǎn)運(yùn)算或高級擴(kuò)展功能的arm cpu。簡單來說,Android為了適應(yīng)五花八門各式各樣的智能終端硬件環(huán)境,采用了不同的配置對應(yīng)不同文件夾的調(diào)用模式,好比大家熟悉的不同屏幕dpi會(huì)調(diào)用不同的圖片文件夾,如下圖。
那么關(guān)鍵的來了,當(dāng)我們嚴(yán)格按照兩個(gè)SDK添加鏈接庫后,百度地圖三個(gè)so庫文件就存放在armeabi文件夾下,而armeabi-v7a文件夾下并沒有百度地圖相應(yīng)的so庫,但ArcGIS卻在兩個(gè)文件夾下都有相應(yīng)的so庫,這里不得不說,Esri作為GIS、地圖領(lǐng)域的世界領(lǐng)頭羊,考慮的還是比較細(xì)。
然后編譯程序時(shí),Eclipse會(huì)在兩個(gè)文件夾里搜索相應(yīng)的庫文件,而只會(huì)根據(jù)Android手機(jī)的具體情況拷貝相應(yīng)文件夾下的庫文件。當(dāng)今絕大多數(shù)的手機(jī)已經(jīng)具備了針對有浮點(diǎn)運(yùn)算或高級擴(kuò)展功能的arm cpu,所以在手機(jī)根目錄下/data/data/(program_name)/lib下只會(huì)拷貝armeabi-v7a文件夾下的庫文件,而此時(shí)并不會(huì)有百度地圖的so庫文件。從而會(huì)導(dǎo)致百度地圖SDK程序直接崩潰,并報(bào)出java.lang.ExceptionInInitializerError錯(cuò)誤。
明白了原理,解決辦法就十分簡單了,將armeabi文件夾下百度地圖的so庫文件拷貝到armeabi-v7a文件夾下,如下圖:
重新clean一下project,重新編譯后程序就可以正常調(diào)用百度地圖和ArcGIS兩個(gè)SDK庫了。
基于GIS地圖軟件開發(fā)有哪些主項(xiàng)
目前國際上主流的gis軟件是ESRI公司的軟件,這是一個(gè)大的概念,它還包括桌面版的ArcGIS,其中包含若干個(gè)應(yīng)用程序,比如ArcMap(用于配置二維工程地圖,地圖顯示和打印輸出用)、ArcGloble(配置三維工程地圖的桌面程序)、ArcCatalog(用于圖形數(shù)據(jù)的管理,類似于windows的文件管理器)、ArcReader(用于三維地圖顯示,功能比ArcGloble簡單,不適合于大量數(shù)據(jù))、ArcTool(一個(gè)工具集,用于批量數(shù)據(jù)處理等工作,非常強(qiáng)大和實(shí)用的工具箱);ESRI的開桌面版的開發(fā)包是ArcEngine; *** 版的開發(fā)包是ArcGIS Server。當(dāng)前更高版本是9.3。ArcView是ESRI很早的一款地圖軟件,功能簡單,開發(fā)包叫MO。現(xiàn)在已經(jīng)不提供支持了。國內(nèi)的重要的軟件就是超圖公司的SurperMap,但是我對這款軟件就知道很有限了。其他軟件有MapInfo(開發(fā)工具M(jìn)apX)和我國地質(zhì)大學(xué)的MapGIS軟件(最近幾年很少聽到了),以及若干開源的軟件。
android百度地圖怎么開發(fā)
一、基本概念:
(一)、百度地圖:
百度地圖 Android SDK是一套基于Android 2.1及以上版本設(shè)備的應(yīng)用程序接口。 您可以使用該套 SDK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,您可以輕松訪問百度地圖服務(wù)和數(shù)據(jù), 構(gòu)建功能豐富、交互性強(qiáng)的地圖類應(yīng)用程序。
百度地圖Android SDK提供的所有服務(wù)是免費(fèi)的,接口使用無次數(shù)限制。您需申請密鑰(key)后, 才可使用百度地圖Android SDK。
(二)、LBS:(Location based Service)基于位置的服務(wù)
基于位置的服務(wù),它是通過電信移動(dòng)運(yùn)營商的無線電通訊 *** (如G *** 網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動(dòng)終端用戶的位置信息(地理坐標(biāo),或大地坐標(biāo)),在地理信息系統(tǒng)(外語縮寫:GIS、外語全稱:Geographic Information System)平臺(tái)的支持下,為用戶提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。
二、百度地圖使用步驟:【參照()】
(一)、HelloBaiduMap:
1、之一步:申請百度地圖密鑰(API_KEY):
2、第二步:在工程里新建libs文件夾,將開發(fā)包里的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網(wǎng)demo里已有這兩個(gè)文件,如果要集成到自己的工程里,就需要自己添加),拷貝完成后的工程目錄如下圖所示;
注:liblocSDK3.so和locSDK_3.1.jar為百度定位SDK所使用資源,開發(fā)者可根據(jù)實(shí)際需求自行添加。
3、第三步:在AndroidManifest中添加開發(fā)密鑰、所需權(quán)限等信息;
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、第五步:在應(yīng)用程序創(chuàng)建時(shí)初始化 SDK引用的Context 全局變量:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該 *** 要再setContentView *** 之前實(shí)現(xiàn)
SDKInitializer.initialize(getApplicationContext());
// 裝載布局文件
setContentView(R.layout.activity_main);
}
6、第六步:創(chuàng)建地圖Activity,管理地圖生命周期:
publicclass MainActivity extends Activity {
private MapView mapView;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該 *** 要再setContentView *** 之前實(shí)現(xiàn)
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();
}
}
(二)、基礎(chǔ)地圖:
1、實(shí)現(xiàn)基礎(chǔ)地圖的操作步驟:
布局文件中使用MapView;
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化BaiduMap對象;
對MapView進(jìn)行findViewById();
MapView對象調(diào)用getMap(),返回BaiduMap;
設(shè)置BaiduMap;
setMapType();
setTrafficEnabled();
(三)、POI搜索:
1、實(shí)現(xiàn)POI搜索的操作步驟:
布局文件中使用fragment,用來實(shí)現(xiàn)對BaiduMap的加載;
class="com.baidu.mapapi.map.SupportMapFragment"
當(dāng)前Activity繼承于FragementActivity;
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
備注:該兩句話必須放在setContentView()之前。
初始化BaiduMap對象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch對象;
PoiSearch.newInstance();
給PoiSearch對象設(shè)置監(jiān)聽器;
setOnGetPoiSearchResultListener(),重寫onGetPoiResult() *** ;
自定義PoiOverlay類,實(shí)現(xiàn)對每個(gè)標(biāo)記的單擊監(jiān)聽;
通過onPoiClick() *** ,獲取每個(gè)PoiInfo中的信息。如果這個(gè)對象中包含有明細(xì),可以打開一個(gè)新頁面來展示興趣點(diǎn)的詳細(xì)介紹。
在AndroidManifest.xml文件中配置PlaceCaterActivity頁面;
該頁面是Baidu提供的POI的明細(xì)介紹頁面。
PoiSearch對象調(diào)用searchInBound()、searchInCity() 、 searchNearby() *** 實(shí)現(xiàn)興趣點(diǎn)查詢。
【總結(jié):】核心步驟:
實(shí)例化BaiduMap,PoiSearch對象;
PoiSearch對象設(shè)置OnGetPoiSearchResultListener()監(jiān)聽;
PoiSearch對象調(diào)用searchInCity() *** 觸發(fā)監(jiān)聽。
(四)、線路規(guī)劃:
1、實(shí)現(xiàn)路線規(guī)劃的操作步驟:
布局文件中使用MapView,用來實(shí)現(xiàn)對BaiduMap的加載;
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化MapView;
調(diào)用findViewById()
初始化BaiduMap對象;
baiduMap = MapView對象.getMap();
初始化RoutePlanSearch對象;
RoutePlanSearch.newInstance();
給RoutePlanSearch對象設(shè)置監(jiān)聽器;
setOnGetRoutePlanResultListener(),重寫onGetWalkingRouteResult()、onGetTransitRouteResult()、onGetDrivingRouteResult() *** ;
自定義三種RouteOverlay類(WalkingRouteOverlay、TransitRouteOverlay、DrivingRouteOvelray);
調(diào)用RoutePlanSearch對象的三種 *** (drivingSearch()、transitSearch()、walkingSearch())實(shí)現(xiàn)路線規(guī)劃。
【總結(jié):】核心步驟:
實(shí)例化BaiduMap,RoutePlanSearch對象;
RoutePlanSearch對象設(shè)置OnGetRoutePlanResultListener監(jiān)聽;
RoutePlanSearch對象調(diào)用drivingSearch()、transitSearch()、walkingSearch() *** 觸發(fā)監(jiān)聽。
(五)、公交查詢:
1、實(shí)現(xiàn)公交查詢的操作步驟:
布局文件中使用fragment,用來實(shí)現(xiàn)對BaiduMap的加載;
class="com.baidu.mapapi.map.SupportMapFragment"
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
當(dāng)前Activity繼承于FragementActivity;
初始化BaiduMap對象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch對象/初始化BusLineSearch對象;
PoiSearch.newInstance();
BusLineSearch.newInstance();
給BusLineSearch對象設(shè)置監(jiān)聽器;
setOnGetBusLineSearchResultListener(),重寫onGetBusLineResult() *** ;
給PoiSearch對象設(shè)置監(jiān)聽器;
setOnGetPoiSearchResultListener(),重寫onGetPoiResult() *** ;
在這個(gè)監(jiān)聽器中調(diào)用BusLineSearch對象的searchBusLine() *** ;
給按鈕增加單擊監(jiān)聽事件,實(shí)現(xiàn)PoiSearch對象的searchInBound()、searchInCity() 、 searchNearby() *** 實(shí)現(xiàn)興趣點(diǎn)查詢。
【總結(jié):】核心步驟:
實(shí)例化BaiduMap、PoiSearch對象及BusLineSearch對象;
PoiSearch對象設(shè)置OnGetPoiSearchResultListener()監(jiān)聽;BusLineSearch對象設(shè)置OnGetBusLineSearchResultListener監(jiān)聽;
在PoiSearch對象的監(jiān)聽回調(diào) *** onGetPoiResult()中調(diào)用busLineSearch對象的searchBusLine() *** ;
PoiSearch對象調(diào)用searchInCity() *** 觸發(fā)整個(gè)監(jiān)聽。
【備注:】
整體思路:先調(diào)用POI查詢,在POI查詢中的監(jiān)聽器中執(zhí)行BusLine查詢。
如何用gis實(shí)現(xiàn)百度地圖的展示實(shí)例?
你如果要自己用Flex做的話,就要首先獲取百度地圖的瓦片服務(wù)的地址,要做路徑查詢的話還要獲取百度地圖路徑分析服務(wù)的地址!現(xiàn)在是比賽的季節(jié),ESRI聯(lián)合天地圖開放了地圖服務(wù)接口,,你可以參考下,至于你說的那些什么標(biāo)記,繪制都可以在Flex中用代碼實(shí)現(xiàn)
關(guān)于gis地圖百度地圖開發(fā)和百度地圖是基于gis開發(fā)的嗎的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。