1. 百度地圖API基本使用(三)
PS:我所使用的的是網路地圖javascript API 3.0
本文是對之前使用的延續,繼續對網路地圖API的一些使用去做歸納和總結,本次主要是對地圖上的事件以及路線規劃做下一下介紹,如果有小夥伴沒有看過之前的網路地圖API基本使用(一),網路地圖API基本使用(二),可以先去觀看一下,前期所需要的一些准備,以及一些基本的用法。
感興趣的小夥伴可以自行查看網路地圖官方提供的文檔
網路地圖開放平台開發文檔中的JavaScript API
也可以通過下方示例中心更直觀地看到網路地圖API的一些使用,以及它的一些特性
網路地圖開放平台-示例中心
想深入研究網路地圖avaScript API 3.0方法參數信息的話,可以通過下方類參考
網路地圖avaScript API v3.0類參考
另外不同版本的API可以自行在開發文檔中的類參考類目中找到,請自行查找
不過要注意:實例中心使用的是BMap去創建容器的,最新版GL地圖命名空間為BMapGL, 可按住滑鼠右鍵控制地圖旋轉、修改傾斜角度。
BMapGL在引入API的方式如下:
BMap在引入API的方式如下:
按照你自己的需求去引用
好的,廢話不多說,開整
1.地圖載入完成事件 這個事件顧名思義就是在地圖載入完成之後會調用這個事件,我們可以去做一些操作。
實現的效果就是在地圖載入完成之後,會彈出地圖載入完成的提示!實際應用的時候可以能就會涉及到一些基於地圖的初始化操作。具體情況具體分析,就不做過多贅述了。
2.地圖單擊事件 這個事件顧名思義就是在當我們滑鼠點擊地圖上的時候,就會觸發這個事件。
我們實現的這個就是單擊地圖的時候就會觸發,可以獲取到這個點的經緯度等信息。以及我們之前有介紹的覆蓋物的一些觸發事件,基本上都是使用的是這個單擊事件,使用addEventListener監聽click去實現的,這個方法還有監聽別的事件,就不一一舉例了,給大家看一下有哪些事件可以監聽,這些都是從官方提供的類參考中找到的。
3.注銷事件 這個注銷方法也比較簡單,上一個點擊事件我們使用的是addEventListener監聽click去實現的,這個注銷實際上就是移除這個事件,類似於之前的刪除覆蓋類都是使用的remove這個欄位,對應的就是removeEventListener監聽click去刪除這個點擊事件實現的。
如果想研究比較詳細的地圖事件的小夥伴可以自行查看研究
事件-地圖事件
1.覆蓋物滑鼠事件 這個覆蓋物滑鼠事件實質就是地圖的點擊事件,只不過對象換成了覆蓋物對象,本質都是使用addEventListener去監聽事件的發生。
創建一個點和一個面覆蓋物,然後去給這兩個覆蓋物添加滑鼠點擊事件
如果想研究比較詳細的覆蓋物事件的小夥伴可以自行查看研究
事件-覆蓋物事件
首先說明一下這個路線規劃分為4種,分別是駕車路線規劃,公交路線規劃,步行路線規劃,以及騎行路線規劃,使用的類是不一樣的,我們一起來看一看。
1.基礎駕車路線規劃服務示例:
代碼如下:
2.數據介面
駕車導航服務也提供了豐富的數據介面,通過onSearchComplete回調函數可以得到BMap.DrivingRouteResult對象,它包含了駕車導航結果數據信息。 結果會包含若干駕車方案,每條方案中包含了若干駕車線路。 每條駕車線路又會包含一系列的關鍵步驟(BMap.Step),關鍵步驟描述了具體駕車行駛方案。
BMap.TransitRoute類提供公交線路規劃服務。
注意:v3.0中,新增了TransitRoutePlan.getTotal 和 TransitRoutePlan.getTotalType方法,可以獲取一條公交換乘方案中總路段數(步行+公交),和指定路段的交通方式類型(步行或公交)。
1.使用服務示例
代碼如下:
2.進行跨城路線規劃
代碼如下:
BMap.WalkingRoute提供步行線路規劃服務。基本用法和駕車線路規劃類似。
使用服務示例
代碼如下:
BMap.RidingRoute提供騎行線路規劃服務,基本用法和步行線路規劃基本相同。
使用服務示例
代碼如下:
感興趣的小夥伴可以自行去研究
網路地圖Javascript API 3.0 出行路線規劃 網路地圖js API示例 路線規劃
感謝諸君的觀看,文中如有紕漏,歡迎在評論區來交流。如果這篇文章幫助到了你,歡迎點贊和關注。
2. java類方法中百度地圖API
網路地圖Web服務為開發者提供http介面,即開發者通過http形式發起檢索請求,獲取返回json或xml格式的檢索數據。
api官網說明鏈接:
http://developer..com/map/webservice.htm
1、可用介面列舉:
獲取相關地址提示 place suggestion
http://api.map..com/place/v2/suggestion?query=水杉®ion=成都&output=json&ak=
2、獲取坐標 geocoding
http://api.map..com/geocoder?address=錦江區菱安路299號&output=json&key=
http://api.map..com/place/v2/search?ak=&output=json&query=藍光coco金沙&page_size=10&page_num=0&scope=1®ion=成都
{
"status":0,
"message":"ok",
"total":2,
"results":[
{
"name":"藍光COCO金沙",
"location":{
"lat":30.687544,
"lng":103.996691
},
"address":"西三環外金沙西源大道(IT大道旁)",
"uid":"223992992c5ee7e0841541df"
},
{
"name":"藍光COCO金沙2期",
"location":{
"lat":30.681123,
"lng":103.991123
},
"address":"青羊區金沙IT大道旁",
"uid":"b7bb5abb1cd4982213293580"
}
]
}
3、設施導航
http://api.map..com/place/v2/search?ak=&output=json&query=圖書館&page_size=20&page_num=0&scope=2®ion=成都
4、java測試類:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class LocationUtil {
private static final String BAIDU_APP_KEY = "";
/**
* 返回輸入地址的經緯度坐標 key lng(經度),lat(緯度)
*/
public static Map<String, String> getLatitude(String address) {
try {
// 將地址轉換成utf-8的16進制
address = URLEncoder.encode(address, "UTF-8");
// 如果有代理,要設置代理,沒代理可注釋
// System.setProperty("http.proxyHost","192.168.172.23");
// System.setProperty("http.proxyPort","3209");
URL resjson = new URL("http://api.map..com/geocoder?address="
+ address + "&output=json&key=" + BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
String res;
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
System.out.println("return json:" + str);
if(str!=null&&!str.equals("")){
Map<String, String> map = null;
int lngStart = str.indexOf("lng\":");
int lngEnd = str.indexOf(",\"lat");
int latEnd = str.indexOf("},\"precise");
if (lngStart > 0 && lngEnd > 0 && latEnd > 0) {
String lng = str.substring(lngStart + 5, lngEnd);
String lat = str.substring(lngEnd + 7, latEnd);
map = new HashMap<String, String>();
map.put("lng", lng);
map.put("lat", lat);
return map;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String args[]) {
Map<String, String> map = LocationUtil.getLatitude("成都 高新西區西區大道1398號");
if (null != map) {
System.out.println(map.get("lng"));
System.out.println(map.get("lat"));
}
}
}
3. 百度地圖api獲取代碼怎麼使用
1)下載網路地圖移動版API(Android)開發包
要在Android應用中使用網路地圖API,就需要在工程中引用網路地圖API開發包,這個開發包包含兩個文件:mapapi.jar和libBMapApiEngine.so。
2)申請API Key 和使用Google map api一樣,在使用網路地圖API之前也需要獲取相應的API Key。網路地圖API Key與你的網路賬戶相關聯,因此您必須先有網路帳戶,才能獲得API
Key;並且,該Key與您引用API的程序名稱有關。
網路API Key的申請要比Google的簡單多了,其實只要你有網路帳號,應該不超過30秒就能完成API Key的申請。
3)創建一個Android工程
這里需要強調一點:網路地圖移動版api支持Android 1.5及以上系統,因此我們創建的工程應基於Android SDK 1.5及以上。 工程創建完成後,將mapapi.jar和libBMapApiEngine.so分別拷貝到工程的根目錄及libs/armeabi目錄下,並在工程屬性->Java Build Path->Libraries中選擇「Add JARs」,選定mapapi.jar,這樣就可以在應用中使用網路地圖API了。工程完整的目錄結構如下圖所示:
4)在布局文件中添加地圖控制項(res/layout/main.xml)
5)創建Activity繼承com..mapapi.MapActivity
package com.liufeng.map;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import com..mapapi.BMapManager;
import com..mapapi.GeoPoint;
import com..mapapi.MapActivity;
import com..mapapi.MapController;
import com..mapapi.MapView;
public class MainActivity extends MapActivity {
private BMapManager mapManager;
private MapView mapView;
private MapController mapController;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化MapActivity
mapManager = new BMapManager(getApplication());
// init方法的第一個參數需填入申請的API Key
mapManager.init("", null);
super.initMapActivity(mapManager);
mapView = (MapView) findViewById(R.id.map_View);
// 設置地圖模式為交通地圖
mapView.setTraffic(true);
// 設置啟用內置的縮放控制項
mapView.setBuiltInZoomControls(true);
// 用給定的經緯度構造一個GeoPoint(緯度,經度)
GeoPoint point = new GeoPoint((int) (47.118440 * 1E6), (int) (87.493147 * 1E6));
// 創建標記maker
Drawable marker = this.getResources().getDrawable(R.drawable.iconmarka);
// 為maker定義位置和邊界
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());
// 取得地圖控制器對象,用於控制MapView
mapController = mapView.getController();
// 設置地圖的中心
mapController.setCenter(point);
// 設置地圖默認的縮放級別
mapController.setZoom(12);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
protected void onDestroy() {
if (mapManager != null) {
mapManager.destroy();
mapManager = null;
}
super.onDestroy();
}
@Override
protected void onPause() {
if (mapManager != null) {
mapManager.stop();
}
super.onPause();
}
@Override
protected void onResume() {
if (mapManager != null) {
mapManager.start();
}
super.onResume();
}
}
6)在AndroidManifest.xml中配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
package="com.liufeng.map"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
4. 怎麼樣使用java來獲得百度地圖開源介面中,IP定位返回的結果
|
額這個就是json的啦
vars='{"address":"CN|u5409u6797|u957fu6625|None|CERNET|1|None","content":{"address":"","address_detail":{"city":"u957fu6625u5e02","city_code":53,"district":"","province":"u5409u6797u7701","street":"","street_number":""},"point":{"x":"125.31364243","y":"43.89833761"}},"status":0}';
varjsonObj=eval("("+s+")");
你就可內以得容到的啦
就是的啦
varstr=jsonObj.address;
5. 想用java 做一個平台,能夠調用百度或谷歌地圖並在地圖上顯示定位位置和軌跡回放,涉及java 的那些知識
如果是WEB方式,需要:
java開發移動端APP,獲取GPS數據並存入資料庫
頁面JSP調用網路地版圖API
地圖上權所需的位置坐標從資料庫中查詢
涉及到的知識比較廣,JSP\JAVA ANDROID IDE\J2SE\HTML\DATABASE