1.初始化地图

//初始化地图
private void initMapView() {
//1.获取地图控件引用
mMapView = findViewById(R.id.bmapView);
mBaidumap = mMapView.getMap();
//2.设置初始定位点在上海
GEO_SHANGHAI = new LatLng(31.227, 121.481);
GEO_BEIJING = new LatLng(39.963175, 116.400244);
mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(GEO_SHANGHAI));
//3.设置地图比例尺,14级。比例尺为1000m(百度地图暂时只能放大到100m)
mBaidumap.setMapStatus(MapStatusUpdateFactory.zoomTo(13)); }

2.用户输入地址获取经纬度

地理编码是地址信息和地理坐标之间的相互转换。可分为正地理编码(地址信息转换为地理坐标)和逆地理编码(地理坐标转换为地址信息)。

逆地理编码服务通过地面某个地物的地理坐标值检索到该地物所在的行政区划、所处街道、以及最匹配的标准地址信息。通过丰富的标准地址库中的数据,帮助用户在进行移动端查询、商业分析、规划分析等领域创造无限价值。 推荐与定位服务配合使用,通过定位获得的地理坐标获取详细的地址信息。

package com.example.lucky.zjzyhq3;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.geocode.GeoCodeOption;
import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
import com.bin.david.form.core.SmartTable;
import com.bin.david.form.data.table.MapTableData; public class ShowDataActivity extends AppCompatActivity {
SmartTable table;
Button btSD_exit;
Button btSD_query;
GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用
BaiduMap mBaidumap;
MapView mMapView = null;
LatLng GEO_SHANGHAI;
LatLng GEO_BEIJING;
EditText etSD_queryaddress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_data);
//1.获取从MyFragment_basicMessage中传过来的值
Intent intent=getIntent();
String queryResultStr=intent.getStringExtra("queryresult"); table =findViewById(R.id.table);
btSD_exit=findViewById(R.id.btSD_exit);
btSD_query=findViewById(R.id.btSD_query);
etSD_queryaddress=findViewById(R.id.etSD_queryaddress);
if(queryResultStr.equals("[]")){
Toast.makeText(ShowDataActivity.this,"无匹配查询结果",Toast.LENGTH_LONG).show();
}else {
MapTableData tableData = MapTableData.create("表格名",JsonHelper.jsonToMapList(queryResultStr));
table.setTableData(tableData);
} //2.初始化地图
initMapView();
//3.初始化搜索模块,注册事件监听,创建地理编码检索实例
mSearch = GeoCoder.newInstance();
mSearch.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
//正地理编码(地址转坐标)
@Override
public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
if (geoCodeResult == null || geoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(ShowDataActivity.this, "抱歉,未能找到结果", Toast.LENGTH_LONG)
.show();
return;
}
mBaidumap.clear();
mBaidumap.addOverlay(new MarkerOptions().position(geoCodeResult.getLocation())
.icon(BitmapDescriptorFactory
.fromResource(R.mipmap.icon_gcoding)));
//加上覆盖物
mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(geoCodeResult
.getLocation()));
//定位
String strInfo = String.format("纬度:%f 经度:%f",
geoCodeResult.getLocation().latitude, geoCodeResult.getLocation().longitude);
Toast.makeText(ShowDataActivity.this, strInfo, Toast.LENGTH_LONG).show();
} //逆地理编码(即坐标转地址)
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
if (reverseGeoCodeResult == null || reverseGeoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(ShowDataActivity.this, "抱歉,未能找到结果", Toast.LENGTH_LONG)
.show();
return;
}
mBaidumap.clear();
mBaidumap.addOverlay(new MarkerOptions().position(reverseGeoCodeResult.getLocation())
.icon(BitmapDescriptorFactory
.fromResource(R.mipmap.icon_gcoding)));
//加上覆盖物
mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(reverseGeoCodeResult
.getLocation()));
//定位
Toast.makeText(ShowDataActivity.this, reverseGeoCodeResult.getAddress(),
Toast.LENGTH_LONG).show();
//result保存翻地理编码的结果 坐标-->城市
}
}); btSD_exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1=new Intent(ShowDataActivity.this,MainScreenActivity.class);
startActivity(intent1);
}
}); btSD_query.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取用户输入的地址
String[] queryAddress=etSD_queryaddress.getText().toString().split("_");
if(!queryAddress[0].equals("")){
//设置GeoCodeOption,发起geoCode检索
mSearch.geocode(new GeoCodeOption()
.city(queryAddress[0])
.address(queryAddress[1]));
} }
});
System.out.println(queryResultStr);
} //初始化地图
private void initMapView() {
//1.获取地图控件引用
mMapView = findViewById(R.id.bmapView);
mBaidumap = mMapView.getMap();
//2.设置初始定位点在上海
GEO_SHANGHAI = new LatLng(31.227, 121.481);
GEO_BEIJING = new LatLng(39.963175, 116.400244);
mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(GEO_SHANGHAI));
//3.设置地图比例尺,14级。比例尺为1000m(百度地图暂时只能放大到100m)
mBaidumap.setMapStatus(MapStatusUpdateFactory.zoomTo(13)); }
}

3.批量放置标记点

(1)标记点介绍

点标记用来在地图上标记任何位置,例如用户位置、车辆位置、店铺位置等一切带有位置属性的事物。

(2)java代码

//定义Maker坐标点

LatLng point = new LatLng(39.963175, 116.400244);
LatLng point1 = new LatLng(39.967175, 116.402244);
LatLng point2 = new LatLng(39.965175, 116.404244);
LatLng point3 = new LatLng(39.969175, 116.408244);
LatLng point4 = new LatLng(39.960175, 116.406244); ArrayList<LatLng> pointList=new ArrayList<>();
pointList.add(point);
pointList.add(point1);
pointList.add(point2);
pointList.add(point3);
pointList.add(point4); for (int i = 0; i <pointList.size() ; i++) {
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.mipmap.icon_gcoding);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(pointList.get(i))
.icon(bitmap);
//在地图上添加Marker,并显示
mBaidumap.addOverlay(option);
}

(3)效果图

参考文献:

https://blog.csdn.net/u013815546/article/details/45193133(android 百度地图api 地理编码&反地理编码)

https://blog.csdn.net/xiaobijia/article/details/50349865(android 百度地图定位总结)

http://lbsyun.baidu.com/index.php?title=androidsdk/guide/search/geo(百度地图的开发者指南)

050 Android 百度地图的使用的更多相关文章

  1. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  2. Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...

  3. Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...

  4. Android 百度地图API(01)_开发环境 HelloBaiduMap

    转载于:http://blog.csdn.net/lmj623565791/article/details/37729091 转载于:http://blog.csdn.net/crazy1235/ar ...

  5. Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...

  6. Android百度地图相关内容汇总

    Android百度地图知识讲解 1.百度地图开发环境搭建    http://www.apkbus.com/android-116050-1-1.html 2.Android百度地图系列教程    h ...

  7. android 百度地图开发实例(转载)

    因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点androi ...

  8. Android百度地图(二)结合方向传感器我们自己定位哪里走

    Android百度地图(二)结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步改动.有 ...

  9. Android 百度地图 简单实现--- 美食搜索

    Android 百度地图 简单实现---  美食 依赖包: 加入 Android 百度依赖包: 1  key:  <!--        开发人员 key --> <meta-dat ...

随机推荐

  1. GitLab获取人员参与项目-贡献项目列表

    目录 前言 获取token 登录 获取用户参与项目 完整代码 前言 最近在做的统计报表项目包含人员代码提交量. 要获取人员代码提交量首先要知道人员参与的项目.GitLab个人页面中有Contribut ...

  2. nmon服务器性能结果报告分析

    一.nmon命令 ./nmon_x86_64_centos7 -f -s 10 -c 60 -m ./log/  命令的含义是: -f :按标准格式输出文件名称:<hostname>_YY ...

  3. chtMultiRegionSimpleFoam求解器的热源不在边界上【翻译】

    翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/126777-chtmultiregionsimplefoa ...

  4. 实现一个简单的Tomcat

    实现一个简单的Tomcat 1. Tomcat作用 我们的web应用会运行在Tomcat中,那么显然请求必定是先到达Tomcat的,Tomcat对于请求实际上会进行如下的处理: 提供Socket服务: ...

  5. C#图片灰度处理(位深度24→位深度8)、C#图片二值化处理(位深度8→位深度1)

    C#图片灰度处理(位深度24→位深度8) #region 灰度处理 /// <summary> /// 将源图像灰度化,并转化为8位灰度图像. /// </summary> / ...

  6. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)

    因为小程序是以微信为平台运行的,可以同时运行在android与ios的设备上,所以不可避免的会遇到布局适配问题,特别是在iphone5上,因为屏幕尺寸小的缘故,也是适配问题最多的机型,下面就简单介绍几 ...

  7. How to transform the day time images to night time ? A series of paper review and some thinkings about this point.

    How to transform the day time images to night time ?  A series of paper review and some thinkings ab ...

  8. 阶段5 3.微服务项目【学成在线】_day18 用户授权_12-前端集成认证授权-携带JWT授权

    携带JWT授权 登陆后jwt已经存到了sessionStorage里面 当进行微服务的请求就要携带令牌.我们在拦截器里面做文章. 在axios的intercepters拦截器上 手工的给这个课程 造一 ...

  9. Qwidget::update

    void QWidget::update ()分析重绘事件激活 1看看手册中这段话 void QWidget::update () [slot] Updates the widget unless u ...

  10. java 利用poi 实现excel合并单元格后出现边框有的消失的解决方法

    使用工具类RegionUtil CellRangeAddress cra = new CellRangeAddress(nowRowCount, nowRowCount + followSize-1, ...