android地圖標注
『壹』 用android如何把自己做的地圖標上坐標,,一個自畫的停車場平面地圖,並能夠在地圖上畫線
請問樓主你的問題解決了嗎?是如何實現把初始位置的方向和真實方向對應的。我也是自己畫了張平面圖,想實時顯示自己用PDR定位的結果,但是,一開始方向不能同步,會出現我沿著地圖裡面的路走,結果在在地圖上顯示是相反的方向。
『貳』 android 知道南緯北緯,如何在百度地圖中標注出來
下個谷歌地球,用谷歌地球放到到和網路地圖相同的縮放級別,然後谷歌地球會顯示南緯北緯,對應網路地圖就可以標注了
『叄』 android 百度地圖如何實現點擊地圖添加marker,每點擊一次添加一個標注並且之前的標注不消失,如何實現
網路地圖應該有地圖點擊事件介面,然後利用這個介面實現添加marker的功能,添加完後你不去管他,marker應該不會消失,畢竟你添加了
『肆』 android 百度地圖標記坐標問題
1、構建基礎地圖頁面;
2、在地圖的中心點處添加 Marker;
3、實現 Marker 的點擊事件響應;
4、實現 Marker 的添加和靈活刪除;
為了實現以上目標,我們會分成以下若干步驟來進行。
第一步、創建工程,導入網路地圖 Android SDK;
具體創建工程的方式(略)。本示例主要是為了實現地圖及相關的覆蓋物功能,因此這里我只使用 SDK 開發資源下載平台所提供的【基礎地圖】功能模塊即可。
選擇完成後,點擊開發包下載,將所下載開發包正確導入開發工程。
第二步、申請開發者秘鑰;
工程創建完成後,到 API 控制台,申請相應的開發秘鑰,為具體開發工作準備。
具體申請方式及注意事項,請參考:http://blog.csdn.net/callmesen/article/details/39523767 此處不再贅述。
第三步、修改 AndroidManifest 文件,添加開發秘鑰和所需許可權;
在 AndroidManifest 文件中,添加開發秘鑰和所需許可權。
添加開發秘鑰方式如下:
[html] view plain
<meta-data
android:name="com..lbsapi.API_KEY"
android:value="開發秘鑰!" />
注意在 application 裡面。
添加所需許可權如下:
[html] view plain
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
第四步、創建基礎地圖;
在 xml 文件中添加 mapview 控制項,如下所示:
[html] view plain
<com..mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
在 java 代碼中初始化地圖 SDK,實現基礎地圖的展示:
[java] view plain
//初始化地圖 SDK
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//綁定XML中得 mapview 控制項
mapView = (MapView) findViewById(R.id.bmapView);
第五步、獲取地圖中心點,並添加 Marker 對象;
實現的核心代碼如下:
[java] view plain
Map = mapView.getMap();
LatLng latLng = Map.getMapStatus().target;
//准備 marker 的圖片
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
//准備 marker option 添加 marker 使用
markerOptions = new MarkerOptions().icon(bitmap).position(latLng);
//獲取添加的 marker 這樣便於後續的操作
marker = (Marker) Map.addOverlay(markerOptions);
第六步、實現 Marker 的點擊事件響應;
利用 map 對象的地圖監聽方法,實現針對 marker 的點擊響應,核心代碼如下:
[java] view plain
//對 marker 添加點擊相應事件
Map.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Marker被點擊了!", Toast.LENGTH_SHORT).show();
return false;
}
});
第七步、利用 Button 控制項,控制 Marker 的添加刪除;
這里用 button 來控制在地圖上添加 或者 刪除一個 marker,首先在 xml 中添加一個 button 控制項:
[html] view plain
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="刪除Marker" />
在 java 代碼中添加這個 button 的點擊事件響應,核心代碼如下:
[java] view plain
//按鈕控制添加刪除 button
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(button.getText() == "添加Marker")
{
marker = (Marker) Map.addOverlay(markerOptions);
button.setText("刪除Marker");
}
else
{
marker.remove();
button.setText("添加Marker");
}
}
});
通過以上的操作,就可以實現相應的 marker 添加,marker 點擊響應,marker 刪除等操作。
『伍』 android 百度地圖標記點
我有嘗試過標注2000多個點~~大概需要載入的時間就是4,5秒~~而1萬多兩萬個點,那應該不是一般的慢.~~對於一個app來說`~載入時間越短越好~~
UI方面優化如下:
對於很多的點可以進行把相近的點集合在一個點上,而這個點標記的內容則是顯示當前集合在這個點上的數量,而點擊這個點再次顯示這個點集下的內容.如美團網app處理相近點商家的處理方式一樣.
『陸』 android開發 百度地圖3.0以上版本,如何顯示自定義標記圖標
//定義Maker坐標點
LatLng point = new LatLng(39.963175, 116.400244);
//構建Marker圖標
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.icon_marka);
//構建MarkerOption,用於在地圖上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地圖上添加Marker,並顯示
mBaiMap.addOverlay(option);
『柒』 android怎麼實現百度地圖標記多個地方
//獲取經緯度
double latitude = latLng.latitude;
double longitude = latLng.longitude;
System.out.println("latitude=" + latitude + ",longitude=" + longitude);
//先清除圖層
mBaiMap.clear();
// 定義Maker坐標點
LatLng point = new LatLng(latitude, longitude);
// 構建MarkerOption,用於在地圖上添加Marker
MarkerOptions options = new MarkerOptions().position(point)
.icon(bitmap);
// 在地圖上添加Marker,並顯示
mBaiMap.addOverlay(options);
// 在地圖上添加Marker數組,並顯示
//mBaiMap.addOverlays(overlayOptionses);
『捌』 android 百度地圖上marker點移動要怎麼處理
如何在頁面中調用網路地圖,直接在你想要插入的頁面上調用網路地圖代碼即可
網路地圖調用API地址:http://api.map..com/lbsapi/creatmap/index.html
1.設置定位中心:直接搜索你要找的位置即可。
調用網路地圖代碼
2.設置地圖:設置地圖樣式,如大小,顯示,功能等。
3.添加標註:添加你要標注的地方,自定義坐標位置
4.獲取代碼:點擊獲取代碼即可,在你要插入網路地圖的地方出入網路地圖代碼
只要插入<!--引用網路地圖API-->部分的代碼就行。
『玖』 android調用百度地圖,怎麼添加備注
添加標記
定義自己的覆蓋層
public class GoogleMapOverlay extends Overlay {
private GeoPoint gp;
GoogleMapOverlay(GeoPoint gp){
super();
this.gp = gp;
}
GoogleMapOverlay(int latitudeE6, int longitudeE6){
super();
gp = new GeoPoint(latitudeE6, longitudeE6);
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow, when);
Point p = new Point();
gMap.getProjection().toPixels(gp, p);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.mark);
canvas.drawBitmap(bmp, p.x, p.y, null);
return true;
}
}
繼承Overlay重寫draw方法,其中的gMap.getProjection()表示得到地圖經緯度坐標和手機像素坐標之間的轉換對象,toPixels函數表示將經緯度坐標轉換為手機像素坐標。在canvas上繪制R.drawable.mark的圖像,添加自己的標記,可能需要根據圖片大小自己精確調整標記位置。下面顯示圖像
『拾』 android中循環在百度地圖上添加標注後,怎樣實現點擊每個標注獲取相應信息
01.var map = new BMap.Map("Mapcontainer");
02. var JsonObj = eval(JsonStr);
03. if (JsonObj != null) {
04. for (var i = 0; i < JsonObj.length; i++) {
05. (function (x) {
06. var point = new BMap.Point(JsonObj[x].Visit_GPS_Longitude, JsonObj[x].Visit_GPS_Latitude); // 創建點坐標
07. map.centerAndZoom(point, 13);
08. var marker = new BMap.Marker(point);
09. var opts = {
10. width: 250, // 信息窗口寬度
11. height: 100, // 信息窗口高度
12. title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[x].CustomerName + '</span>' // 信息窗口標題
13. }
14. //marker.setAnimation(BMAP_ANIMATION_BOUNCE);
15. var content = "進店時間 " + JsonObj[x].VisitBeginTime + "<br/>離店時間 " + JsonObj[x].VisitEndTime;
16. var info_Window = new BMap.InfoWindow(content, opts); // 創建信息窗口對象
17. marker.addEventListener("click", function () {
18. this.openInfoWindow(info_Window);
19. });
20. map.addOverlay(marker);
21. })(i);
22. }
23. map.addControl(new BMap.NavigationControl());
var map = new BMap.Map("Mapcontainer");
var JsonObj = eval(JsonStr);
if (JsonObj != null) {
for (var i = 0; i < JsonObj.length; i++) {
(function (x) {
var point = new BMap.Point(JsonObj[x].Visit_GPS_Longitude, JsonObj[x].Visit_GPS_Latitude); // 創建點坐標
map.centerAndZoom(point, 13);
var marker = new BMap.Marker(point);
var opts = {
width: 250, // 信息窗口寬度
height: 100, // 信息窗口高度
title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[x].CustomerName + '</span>' // 信息窗口標題
}
//marker.setAnimation(BMAP_ANIMATION_BOUNCE);
var content = "進店時間 " + JsonObj[x].VisitBeginTime + "<br/>離店時間 " + JsonObj[x].VisitEndTime;
var info_Window = new BMap.InfoWindow(content, opts); // 創建信息窗口對象
marker.addEventListener("click", function () {
this.openInfoWindow(info_Window);
});
map.addOverlay(marker);
})(i);
}
map.addControl(new BMap.NavigationControl()); 同樣是一個循環,但是在循環中使用了一個匿名函數,從而造成一個閉包將 i 的值鎖定在裡面,這樣外部的值已經變化,
但是傳到閉包裡面的值已經被保留,也就可以順利拿到應該取到的address[i]的內容了。
這樣雖然解決了問題,但是每添加一個點都會創建一個匿名函數,內存泄漏可能會是潛在隱患。
接下去, 我們就可以自由的在地圖上標注點並顯示對應的信息了!