关于Android高德地图的简单开发实例代码(DEMO)

废话不多说了,直接给大家上干货了。

以下为初次接触时 ,练手的DEMO

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.MapView;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.Poi;
import com.amap.api.maps.overlay.PoiOverlay;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.core.SuggestionCity;
import com.amap.api.services.geocoder.GeocodeQuery;
import com.amap.api.services.geocoder.GeocodeResult;
import com.amap.api.services.geocoder.GeocodeSearch;
import com.amap.api.services.geocoder.RegeocodeQuery;
import com.amap.api.services.geocoder.RegeocodeResult;
import com.amap.api.services.help.Inputtips;
import com.amap.api.services.help.InputtipsQuery;
import com.amap.api.services.help.Tip;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaseMapActivity extends Activity implements
View.OnClickListener,LocationSource,AMapLocationListener,TextWatcher,Inputtips.InputtipsLi
stener,AMap.OnMarkerClickListener,PoiSearch.OnPoiSearchListener,AMap.OnPOIClickListener,Ge
ocodeSearch.OnGeocodeSearchListener{
private MapView mapView;
private AMap aMap;
private LinearLayout ly_1;
private Button bt_map;
private AutoCompleteTextView search_keyword; //输入要搜索的keyword
private ListView listview; //keyword 监听数据形成的列表
private ProgressDialog progDialog = null;// 进度条显示
private LinearLayout ly_2; //ly_1 所包含的布局之一
private Button bt_back1;
private ListView history_listview;
private TextView history_item_tv;
List<Map<String, Object>> listItem; //输入keyword,数据返回的list数据源
//====================以下为操作数据库==================
private ArrayList<HashMap<String, Object>> MapHistoryList;
//=============地图定位控件==============
private OnLocationChangedListener mListener;
private AMapLocationClient mlocationClient;
private AMapLocationClientOption mLocationOption;
//=============地图自身UI定义============
private UiSettings mUiSettings;
//=============通用地图控件==============
private LatLonPoint mLatLonPoint;//初始定位经纬度
private double ms,me; //经纬度double值
private String locationAdressName;
//=============地图POI关键字搜索==========
private PoiResult poiResult; // poi返回的结果
private PoiSearch.Query query;// Poi查询条件类
private PoiSearch poiSearch;// POI搜索
private static String keyWord = "";// 要输入的poi搜索关键字
private int currentPage = 0;// 当前页面,从0开始计数
private Button bt_search; //搜索POI
private MarkerOptions options;
//========================以下为地理编码=================
private GeocodeSearch geocoderSearch;
private static String addressCityDistric; //得到逆地理编码的 市区
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.base_map_activity);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法必须重写
init();
initUi();
initHistoryList();
}
/**
* 初始化AMap对象
*/
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
setUpMap();
}
}
/**
* 设置一些amap的属性
*/
private void setUpMap() {
aMap.setLocationSource(this);// 设置定位监听
aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示
aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示
隐藏定位层并不可触发定位,默认是false
// 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转几种
aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(me,ms), 14)); //当前
地图镜头界面 (让地图在刚进入时就是这个的话,需要先得到LatLng值即可,待后续修正)
mUiSettings= aMap.getUiSettings(); //实例化地图UI设置
mUiSettings.setScaleControlsEnabled(true); //比例尺显示
mUiSettings.setCompassEnabled(false); //指南针不显示
mLocationOption.setGpsFirst(true); //优先返回GPS定位信息
aMap.setOnPOIClickListener(this); //POI 点击事件监听
aMap.setOnMarkerClickListener(this);
geocoderSearch = new GeocodeSearch(this);
geocoderSearch.setOnGeocodeSearchListener(this); // 注册地理编码监听
}
private void initUi(){
ly_1=(LinearLayout)findViewById(R.id.map_2); //地图隐藏掉显示的界面
bt_map=(Button)findViewById(R.id.map_bt); //首页 按钮
bt_map.setOnClickListener(this);
//返回键
bt_back1=(Button)findViewById(R.id.bt_back_1);
bt_back1.setOnClickListener(this);
//keyword
search_keyword=(AutoCompleteTextView)findViewById(R.id.keyWord);
search_keyword.addTextChangedListener(this);
//keyword输入list
listview=(ListView)findViewById(R.id.map_list);
//第二页显示
ly_2=(LinearLayout)findViewById(R.id.history_record);
//POI 搜索 按钮
bt_search=(Button)findViewById(R.id.bt_search);
bt_search.setOnClickListener(this);
//历史记录 list
history_listview=(ListView)findViewById(R.id.lv_history);
history_item_tv=(TextView)findViewById(R.id.history_item_addressName);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.map_bt:
bt_map.setVisibility(View.GONE);
mapView.setVisibility(View.GONE);
ly_1.setVisibility(View.VISIBLE);
break;
case R.id.bt_search:
// mlocationClient.stopLocation();
searchButton();
bt_map.setVisibility(View.GONE);
mapView.setVisibility(View.VISIBLE);
ly_1.setVisibility(View.VISIBLE);
listview.setVisibility(View.GONE);
ly_2.setVisibility(View.GONE);
break;
case R.id.bt_back_1:
aMap.clear();
bt_map.setVisibility(View.VISIBLE);
mapView.setVisibility(View.VISIBLE);
ly_1.setVisibility(View.GONE);
break;
}
}
/**
* 方法必须重写
*/
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
/**
* 方法必须重写
*/
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
/**
* 方法必须重写
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
/**
* 方法必须重写
*/
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
/**
* back设置
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK )
{
aMap.clear();
bt_map.setVisibility(View.VISIBLE);
mapView.setVisibility(View.VISIBLE);
ly_1.setVisibility(View.GONE);
}
return false;
}
//========================================================以下为定位
===============================================
/**
* 激活定位
*/
@Override
public void activate(OnLocationChangedListener listener) {
mListener = listener;
if (mlocationClient == null) {
mlocationClient = new AMapLocationClient(this);
mLocationOption = new AMapLocationClientOption();
//设置定位监听
mlocationClient.setLocationListener(this);
//设置为高精度定位模式
mLocationOption.setLocationMode
(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置定位参数
mlocationClient.setLocationOption(mLocationOption);
// 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
// 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用
stopLocation()方法来取消定位请求
// 在定位结束后,在合适的生命周期调用onDestroy()方法
// 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,
定位sdk内部会移除
mlocationClient.startLocation();
}
}
/**
* 停止定位
*/
@Override
public void deactivate() {
mListener = null;
if (mlocationClient != null) {
mlocationClient.stopLocation();
mlocationClient.onDestroy();
}
mlocationClient = null;
}
/**
* 定位成功后回调函数
*/
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (mListener != null && amapLocation != null) {
if (amapLocation != null
&& amapLocation.getErrorCode() == 0) {
mListener.onLocationChanged(amapLocation);// 显示系统小蓝点
Message msg = mHandler.obtainMessage(); //定位成功后,开始hangler更新经纬
度
msg.obj = amapLocation;
msg.what = Utils.MSG_LOCATION_FINISH;
mHandler.sendMessage(msg);
//当前定位后的详细位置(省、市、区、街道信息)
locationAdressName=amapLocation.getProvider()+amapLocation.getCity
()+amapLocation.getDistrict()+amapLocation.getAddress();
} else {
String errText = "定位失败," + amapLocation.getErrorCode()+ ": " +
amapLocation.getErrorInfo();
Toast.makeText(getApplicationContext(),errText,Toast.LENGTH_SHORT).show();
}
}
}
Handler mHandler = new Handler() {
public void dispatchMessage(android.os.Message msg) {
switch (msg.what) {
//开始定位
case Utils.MSG_LOCATION_START:
//("正在定位...");
break;
// 定位完成
case Utils.MSG_LOCATION_FINISH:
AMapLocation loc = (AMapLocation) msg.obj;
String result = Utils.getLocationStr(loc);
// (result);
ms=Utils.jingdu;
me=Utils.weidu;
mLatLonPoint=new LatLonPoint(me,ms);
break;
//停止定位
case Utils.MSG_LOCATION_STOP:
// ("定位停止");
break;
default:
break;
}
};
};
//=========================================以下为keyword 改变监听
===================================
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence s, int start, int stop, int count) {
String newText = s.toString().trim();
//在这里判断 是否有输入
if(s.length()<1){
ly_2.setVisibility(View.VISIBLE);
listview.setVisibility(View.GONE);
}else
{
ly_2.setVisibility(View.GONE);
mapView.setVisibility(View.GONE);
listview.setVisibility(View.VISIBLE);
}
if (!AMapUtil.IsEmptyOrNullString(newText)) {
InputtipsQuery inputquery = new InputtipsQuery(newText, Utils.city);
Inputtips inputTips = new Inputtips(BaseMapActivity.this, inputquery);
inputTips.setInputtipsListener(this); //设置=======得到数据监听=======
inputTips.requestInputtipsAsyn();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
//=======得到数据监听=======
@Override
public void onGetInputtips(List<Tip> tipList, int rCode) {
if (rCode == 1000) {// 正确返回
//监听反馈回来的数据当做listView数据源
listItem=new ArrayList<Map<String,Object>>();
for (int i = 0; i < tipList.size(); i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("mapName",tipList.get(i).getName());
map.put("mapAddress",tipList.get(i).getDistrict());
map.put("mapPosition",tipList.get(i).getPoint());
listItem.add(map);
}
listview.setAdapter(new MapListAdapter(this,listItem));
//输入时keyword 产生的列表的 item点击事件
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long
l) {
aMap.clear();
mlocationClient.stopLocation();
LatLonPoint latLonPoint=(LatLonPoint)(listItem.get(i).get
("mapPosition"));
Double dd=latLonPoint.getLatitude();
Double ee=latLonPoint.getLongitude();
options=new MarkerOptions();
Marker marker=aMap.addMarker(options.position(new LatLng(dd,ee))); //
做marker标记
marker.setVisible(true);
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(dd,ee),
14));//移动视图
bt_map.setVisibility(View.GONE);
mapView.setVisibility(View.VISIBLE);
ly_1.setVisibility(View.VISIBLE);
listview.setVisibility(View.GONE);
ly_2.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(),""+listItem.get(i).get
("mapPosition"),Toast.LENGTH_SHORT).show();
}
});
} else {
ToastUtil.showerror(this, rCode);
}
}
//==========================================以下为POI关键字搜索
=====================================================
/**
* 显示进度框
*/
private void showProgressDialog() {
if (progDialog == null)
progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setIndeterminate(false);
progDialog.setCancelable(false);
progDialog.setMessage("正在搜索:\n" + keyWord);
progDialog.show();
}
/**
* 隐藏进度框
*/
private void dissmissProgressDialog() {
if (progDialog != null) {
progDialog.dismiss();
}
}
/**
* 点击搜索按钮
*/
public void searchButton() {
keyWord = AMapUtil.checkEditText(search_keyword);
if ("".equals(keyWord)) {
ToastUtil.show(BaseMapActivity.this, "请输入搜索关键字");
return;
} else {
doSearchQuery();
if (MapHistoryList.size()>0){
for (int i=0;i<MapHistoryList.size();i++){
if (keyWord.equals(MapHistoryList.get(i).get("mapHistoryName").toString
())){
return;
}
}}
map_addToHistory(); //增加数据到数据库
}
}
/**
* 开始进行poi搜索
*/
protected void doSearchQuery() {
showProgressDialog();// 显示进度框
mlocationClient.stopLocation(); //停止定位 20160812
query = new PoiSearch.Query(keyWord, "", Utils.city);// 第一个参数表示搜索字符串第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)
query.setPageSize(20);// 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);// 设置查第一页
poiSearch = new PoiSearch(this, query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn();
}
/**
* poi没有搜索到数据,返回一些推荐城市的信息
*/
private void showSuggestCity(List<SuggestionCity> cities) {
String infomation = "推荐城市\n";
for (int i = 0; i < cities.size(); i++) {
infomation += "城市名称:" + cities.get(i).getCityName() + "城市区号:"
+ cities.get(i).getCityCode() + "城市编码:"
+ cities.get(i).getAdCode() + "\n";
}
ToastUtil.show(BaseMapActivity.this, infomation);
}
/**
* POI信息查询回调方法
*/
@Override
public void onPoiSearched(PoiResult result, int rCode) {
dissmissProgressDialog();// 隐藏对话框
if (rCode == 1000) {
if (result != null && result.getQuery() != null) {// 搜索poi的结果
if (result.getQuery().equals(query)) {// 是否是同一条
poiResult = result;
// 取得搜索到的poiitems有多少页
List<PoiItem> poiItems = poiResult.getPois();// 取得第一页的poiitem数据,页数从数字0开始
List<SuggestionCity> suggestionCities = poiResult
.getSearchSuggestionCitys();// 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息
if (poiItems != null && poiItems.size() > 0) {
aMap.clear();// 清理之前的图标
PoiOverlay poiOverlay = new PoiOverlay(aMap, poiItems);
poiOverlay.removeFromMap();
poiOverlay.addToMap();
poiOverlay.zoomToSpan();
} else if (suggestionCities != null
&& suggestionCities.size() > 0) {
showSuggestCity(suggestionCities);
} else {
ToastUtil.show(BaseMapActivity.this,
"无返回结果");
}
}
} else {
ToastUtil.show(BaseMapActivity.this,
"无返回结果");
}
} else {
ToastUtil.showerror(this, rCode);
}
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
//===================以下为POI 点击事件================
@Override
public void onPOIClick(Poi poi) {
// aMap.clear(); //暂时去掉
MarkerOptions markOptiopns = new MarkerOptions();
markOptiopns.position(poi.getCoordinate());
TextView textView = new TextView(getApplicationContext());
textView.setText("到"+poi.getName()+"去");
textView.setGravity(Gravity.CENTER);
textView.setTextColor(Color.BLACK);
textView.setBackgroundResource(R.drawable.dir1);
markOptiopns.icon(BitmapDescriptorFactory.fromView(textView));
markOptiopns.icon(BitmapDescriptorFactory.defaultMarker());
aMap.addMarker(markOptiopns);
LatLng newLatLng=poi.getCoordinate();
Double ss=newLatLng.latitude;
Double se=newLatLng.longitude;
// LatLonPoint newLatLonPoint=new LatLonPoint(ss,se);
getAddress(new LatLonPoint(ss,se));
// Toast.makeText(getApplicationContext
(),"marker"+addressCityDistric,Toast.LENGTH_SHORT).show();
}
//==================以下为 marker 点击事件反馈===================
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(getApplicationContext(),"marker点击"+marker.getPosition
()+"--"+marker.getTitle()+"--"+marker.getSnippet(),Toast.LENGTH_SHORT).show();
marker.getPosition();
return false;
}
//========================以下为地理编码以及你地理编码================================
/**
* 响应地理编码
*/
public void getLatlon(final String name) {
// showDialog();
GeocodeQuery query = new GeocodeQuery(name, Utils.city);// 第一个参数表示地址,第
二个参数表示查询城市,中文或者中文全拼,citycode、adcode,
geocoderSearch.getFromLocationNameAsyn(query);// 设置同步地理编码请求
}
/**
* 响应逆地理编码
*/
public void getAddress(final LatLonPoint latLonPoint) {
// showDialog();
RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200,
GeocodeSearch.AMAP);// 第一个参数表示一个Latlng,第二参数表示范围多少米,
第三个参数表示是火系坐标系还是GPS原生坐标系
geocoderSearch.getFromLocationAsyn(query);// 设置同步逆地理编码请求
}
/**
* 地理编码查询回调
*/
@Override
public void onGeocodeSearched(GeocodeResult result, int rCode) {
// dismissDialog();
if (rCode == 1000) {
if (result != null && result.getGeocodeAddressList() != null
&& result.getGeocodeAddressList().size() > 0) {
// GeocodeAddress address = result.getGeocodeAddressList().get(0);
// aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
// AMapUtil.convertToLatLng(address.getLatLonPoint()), 15));
// geoMarker.setPosition(AMapUtil.convertToLatLng(address
// .getLatLonPoint()));
// addressName = "经纬度值:" + address.getLatLonPoint() + "\n位置描
述:"
// + address.getFormatAddress();
}
} else {
ToastUtil.showerror(this, rCode);
}
}
/**
* 逆地理编码回调
*/
@Override
public void onRegeocodeSearched(RegeocodeResult result, int rCode) {
// dismissDialog();
if (rCode == 1000) {
if (result != null && result.getRegeocodeAddress() != null) {
addressCityDistric = result.getRegeocodeAddress().getFormatAddress();
TextView tv=(TextView)findViewById(R.id.address_name);
tv.setText(addressCityDistric);
Log.e("fans",""+addressCityDistric);
} else {
ToastUtil.showerror(this, rCode);
}
}
}
}
资源文件如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.gaodemap.BaseMapActivity">
<Button
android:id="@+id/map_bt"
android:layout_width="260dp"
android:layout_height="40dp"
android:text="|查地点、搜路线"
android:layout_marginLeft="10dp"
android:layout_marginTop="7dp"
android:background="@android:color/white"
/>
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.amap.api.maps.MapView>
<LinearLayout
android:id="@+id/ly_address_route"
android:layout_width="350dp"
android:layout_height="70dp"
android:orientation="vertical"
android:layout_centerHorizontal="true"
android:layout_marginTop="450dp"
android:background="@android:color/darker_gray"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
>
<TextView
android:id="@+id/address_name"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"/>
<TextView
android:id="@+id/xiangqing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3"
android:text="详情"
android:gravity="center"
/>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black"></FrameLayout>
<TextView
android:id="@+id/route_tv"
android:layout_width="match_parent"
android:layout_height="29dp"
android:text="路径规划"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:id="@+id/map_2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal">
<Button
android:id="@+id/bt_back_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="返回"/>
<AutoCompleteTextView
android:id="@+id/keyWord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入关键字"
android:textSize="14dp"
android:imeOptions="actionDone"
android:inputType="text|textAutoComplete"
android:maxLength="20"
android:layout_weight="2"/>
<Button
android:id="@+id/bt_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="搜索"/>
</LinearLayout>
<ListView
android:id="@+id/map_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"></ListView>
<LinearLayout
android:id="@+id/history_record"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/darker_gray"
>
<TextView
android:id="@+id/history_tv"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="历史记录"
android:textSize="16dp"
android:gravity="center"
/>
<ListView
android:id="@+id/lv_history"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"></ListView>
<TextView
android:id="@+id/zero_history_tv"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="清空历史记录"
android:textSize="16dp"
android:gravity="center"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
代码中相关的工具类,即官方DEMO 中提供的工具类,并没什么改变。。
好了,初步的使用就是这样。
清单文件中相关权限
<!--地图相关权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 定位需要的服务 使用2.0的定位需要加上这个 -->
<service android:name="com.amap.api.location.APSService" ></service>
申请官方相关key ,根据自己androdi studio 上的sha1值和包名来获取
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="xxxxxxxxxxxxxxxxxxxxxxx" /> 

以上所述是小编给大家介绍的关于Android高德地图的简单开发实例代码(DEMO),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android开发之高德地图实现定位

    在应用开发中,地图开发是经常需要使用的"组件",Google Map虽然有官方教程,无奈用不起来,原因你懂的~~那么国内比较出名的是就是百度地图和高德地图,由于个人喜好,所以选择了高德地图LBS,废话不说,上干货. 1.注册开发者,创建应用 这个几乎是所有开放平台都通用的做法,无外乎注册帐号,成为开发者,然后创建一个Android应用,会为你分配一个key绑定你的服务. 注册key.PNG 2.下载SDK,导入jar包,add to library jar包.PNG 第一个是2D地图的

  • Android中GPS坐标转换为高德地图坐标详解

    一.坐标分类 地图坐标大致分为几种: 1.GPS.WGS84,也就是原始坐标体系,这是国际公认的世界标准坐标体系: 2.GCJ-02,又称为"火星坐标",国家测绘局在02年发布的坐标体系,在国内,至少得使用此坐标体系,比如:google.高德.腾讯地图等: 3.其他特殊坐标体系,一般都是由火星坐标通过偏移算法计算得出的,比如百度使用的是BD-09坐标,搜狗使用的是自己的搜狗坐标. 二.坐标转换 1.使用高德地图sdk转换 public AMapLocation fromGpsToAma

  • 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标

    前言 近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GPS数据以及地图匹配. 主要问题和解决方法 本地保存文件跨浏览器支持 由于安全的原因,JavaScript本地保存文件的方式通常都只有IE支持的ActiveXObject/Open方法,每次都要提示不安全和允许运行,非常麻烦.好在其他浏览器目前都支持<a>标签实现文件下载的方法.经测试最新的Goog

  • vue调用高德地图实例代码

    一. vue-amap,一个基于 Vue 2.x 和高德地图的地图组件 https://elemefe.github.io/vue-amap/#/ 这个就不细说了,按照其文档,就能够安装下来. 二. 按照官方提供的方法引入 1.修改webpac.base.conf.js文件 externals: { 'AMap': 'AMap' } 2.引入sdk 引入有两种方式,一种是页面直接引入 复制代码 代码如下: <script type="text/javascript" src=&q

  • 利用java、js或mysql计算高德地图中两坐标之间的距离

    前言 因为工作的原因,最近在做与地图相关的应用,使用了高德地图,研究了下高德地图计算两坐标距离的方法,官网上提供的开发包中有相关的方法,但是我的产品中比较特殊,无法直接使用提供的方法,所以就自己封装了相关计算方法,供大家参考,下面话不多说了,来一起看看详细的介绍吧. Java实现 首先定义一个用于存储经纬度的类,这里起个名字叫:LngLat package amap; import java.text.DecimalFormat; import java.text.DecimalFormatSy

  • 关于Android高德地图的简单开发实例代码(DEMO)

    废话不多说了,直接给大家上干货了. 以下为初次接触时 ,练手的DEMO import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentValues; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatab

  • Android 百度地图POI搜索功能实例代码

    在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这三个字母,决定认认真真的搜索一些POI具体的含义. POI是英文的缩写,原来的单词是point of interest, 直译成中文就是兴趣点的意思.兴趣点这个词最早来自于导航地图厂商.地图厂商为了提供尽可能多的位置信息,花费了很大的精力去寻找诸如加油站,餐馆,酒店,景点等目的地,这些目的地其实都可

  • Vue组件之高德地图地址选择功能的实例代码

    注:本文基于上一篇文章[Vue-Cli 3.0 中配置高德地图 ] ,采用直接引入高德 SDK 的方式来使用高德地图api 一.效果图 二.组件要实现的功能 1. 如果有传入坐标点,则定位到坐标点 2. 如果没有传入坐标点,则定位到当前所在位置 3. 定位成功要在右侧显示经纬度和地址 4. 可以通过拖动 标记 来调整定位点 5. 标记 拖动后,右侧要显示拖动后的经纬度和地址 6. 点击确定按钮,返回最后的坐标点和地名给父组件 三. 组件实现具体代码 <template> <div cla

  • Android和PHP MYSQL交互开发实例

    总述 简单的说,安卓客户端通过Http向本地服务器发出请求,访问指定的php代码,服务器端通过php代码执行数据库的操作, 返回相应的JSON数据.服务器可以理解为运行着某些服务器容器的电脑,比如你的电脑安装了Apache并保持运行,那么电脑就变成了一台服务器,只是这台服务器没有入网,只能本地访问.安卓客户端通过HttpURLConnection向服务器中指定的php文件提交POST或GET请求,服务器端相应php代码接受来自客户端的参数(如果是带参传递)进行数据库的操作,返回JSON数据给客户

  • Android高德地图marker自定义弹框窗口

    本文实例为大家分享了Android高德地图marker自定义弹框窗口的具体代码,供大家参考,具体内容如下 最终效果: 1.gradle里添加高德地图依赖 implementation 'com.amap.api:map2d:latest.integration'//2d地图功能 implementation 'com.amap.api:location:latest.integration'//定位功能 2.如果要用到定位的话,就首先到高德控制台里面加入本应用的信息获取到key,再在Applic

  • Eclipse+Webservice简单开发实例

    1.实例1(主要看到[2]) 1.1.系统功能: 开发一个计算器服务CalculateService,这个服务包含加(plus).减(minus).乘(multiply).除(divide)的操作. 1.2.开发前准备: 安装Eclipse-jee: 下载最新版本的Axis2,网址http://axis.apache.org/axis2/java/core/download.cgi ,选择Standard Binary Distribution的zip包,解压缩得到的目录名axis2-1.4.1

  • Android自定义水波纹动画Layout实例代码

    话不多说,我们先来看看效果: Hi前辈搜索预览 这一张是<Hi前辈>的搜索预览图,你可以在这里下载这个APP查看更多效果: http://www.wandoujia.com/apps/com.superlity.hiqianbei LSearchView 这是一个MD风格的搜索框,集成了ripple动画以及search时的loading,使用很简单,如果你也需要这样的搜索控件不妨来试试:https://github.com/onlynight/LSearchView RippleEverywh

  • Android自定义view实现太极效果实例代码

    Android自定义view实现太极效果实例代码 之前一直想要个加载的loading.却不知道用什么好,然后就想到了太极图标,最后效果是有了,不过感觉用来做loading简直丑到爆!!! 实现效果很简单,我们不要用什么贝塞尔曲线啥的,因为太极无非就是圆圆圆,只要画圆就ok了.来上代码: 因为有黑有白,所以定义2个画笔分别为黑和白. private void inital() { whitePaint = new Paint(); whitePaint.setAntiAlias(true); wh

  • Android网络状态实时监听实例代码(二)

    上篇文章给大家介绍了Android 网络状态实时监听代码实例(一),感兴趣的朋友可以点击了解详情,本文接着给大家介绍android网络状态监听相关知识,具体内容如下所示: 在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityManager有四个主要任务: 1.监听手机网络状态(包括GPRS,WIFI, UMTS等) 2.手机状态发生改变时,发送广播 3.当一

  • Android连接指定Wifi的方法实例代码

    本篇文章主要记录一下Android中打开Wifi.获取Wifi接入点信息及连接指接入点的方法. 自己写的demo主要用于测试接口的基本功能,因此界面及底层逻辑比较粗糙. demo的整体界面如下所示: 上图中的OPEN按键负责开启Wifi: GET按键负责获取扫描到的接入点信息. 当获取到接入点信息后,我选取了其中的名称及信号强度,以列表的形式显示在主界面下方,如下图: 当点击列表中的Item时,就会去连接对应的接入点. 自己的逻辑比较简单,测试时的代码,假定连接的是不许要密码或密码已知的接入点.

随机推荐