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]的内容了。
这样虽然解决了问题,但是每添加一个点都会创建一个匿名函数,内存泄漏可能会是潜在隐患。
接下去, 我们就可以自由的在地图上标注点并显示对应的信息了!