package com.mymapmarker;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.appindexing.Thing;
import com.google.android.gms.common.api.GoogleApiClient;
public class MainActivity extends AppCompatActivity {
MapView mMapView = null;
BaiduMap mBaiduMap;
boolean isFirstLoc = true; // 是否首次定位
MapStatus ms;
// private ClusterManager<MyItem> mClusterManager;
// private LocationMode mCurrentMode;
MyLocationConfiguration.LocationMode mCurrentMode;
public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
// // 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
// // 定位初始化
mLocationClient = new LocationClient(this);
mLocationClient.registerLocationListener(myListener);
location();
// LocationClientOption option = new LocationClientOption();
// option.setOpenGps(true); // 打开gps
// option.setCoorType("bd09ll"); // 设置坐标类型
// option.setScanSpan(1000);
// mLocationClient.setLocOption(option);
// mLocationClient.start();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
private void location() {
// 设置正常模式
mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;
// 地图初始化
mMapView = (MapView) findViewById(R.id.bmapView);
// mMapView.setVisibility(View.VISIBLE);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(15));
/*** ? *************************/
// 设置默认图标
// // 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(0);// 一秒刷新一次
mLocationClient.setLocOption(option);
mLocationClient.start();
}
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
public Action getIndexApiAction() {
Thing object = new Thing.Builder()
.setName("Main Page") // TODO: Define a title for the content shown.
// TODO: Make sure this auto-generated URL is correct.
.setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))
.build();
return new Action.Builder(Action.TYPE_VIEW)
.setObject(object)
.setActionStatus(Action.STATUS_TYPE_COMPLETED)
.build();
}
@Override
public void onStart() {
super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client.connect();
AppIndex.AppIndexApi.start(client, getIndexApiAction());
}
@Override
public void onStop() {
super.onStop();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
AppIndex.AppIndexApi.end(client, getIndexApiAction());
client.disconnect();
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
Log.e("songwinter", location + "");
if (location == null || mMapView == null) {
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
LatLng ll2 = new LatLng(location.getLatitude()+0.00035,
location.getLongitude()+0.00205);
LatLng ll3 = new LatLng(location.getLatitude()+0.0005,
location.getLongitude()+0.0005);
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(ll).zoom(18.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
MarkerOptions options=new MarkerOptions();
options.position(ll3).title("swt test").icon(BitmapDescriptorFactory.fromResource(R.drawable.common_plus_signin_btn_text_dark_focused));
options.animateType(MarkerOptions.MarkerAnimateType.drop);
mBaiduMap.addOverlay(new MarkerOptions().position(ll).icon(BitmapDescriptorFactory.fromResource(R.drawable.common_plus_signin_btn_text_dark_focused)).animateType(MarkerOptions.MarkerAnimateType.drop));
mBaiduMap.addOverlay(new MarkerOptions().position(ll2).icon(BitmapDescriptorFactory.fromResource(R.drawable.common_plus_signin_btn_text_dark_focused)).animateType(MarkerOptions.MarkerAnimateType.drop));
mBaiduMap.addOverlay(options);
}
//
// final Marker marker = mBaiduMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
// 退出时销毁定位
mLocationClient.stop();
// 关闭定位图层
mBaiduMap.setMyLocationEnabled(false);
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
}
Marker的点击事件
/**
* 响应点击图标事件
*
* @author Administrator
*
*/
public class MyOnMarkerClickListener implements OnMarkerClickListener {
// TODO
@Override
public boolean onMarkerClick(Marker marker) {
boolean flag = list.contains(marker);
if (flag) {
int index = list.indexOf(marker);
Log.e("mark", "点击的位置是" + index);
showPopupWindow(index);
}
return true;
}
}
转载请注明原文地址: https://ju.6miu.com/read-40910.html