package com.sogou.fastomiai; import java.util.ArrayList; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.map.offline.MKOfflineMap; import com.baidu.mapapi.map.offline.MKOfflineMapListener; import com.baidu.mapapi.model.LatLng; import com.sogou.fastomiai.controller.SessionManager; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MapActivity extends Activity implements MKOfflineMapListener { // 默认约会地点 final LatLng default_des1 = new LatLng(39.974957, 116.37584); final LatLng default_des2 = new LatLng(39.974957, 116.370283); final LatLng default_des3 = new LatLng(39.974722, 116.436662); final LatLng default_des4 = new LatLng(39.906968, 116.404503); final LatLng default_des5 = new LatLng(39.876322, 116.332782); final LatLng default_des6 = new LatLng(39.850179, 116.424014); // 基础地图 private MapView mMapView = null; private MKOfflineMap mOffline = null; private static BaiduMap mBaiduMap = null; // 定位 public LocationClient mLocationClient = null; private Button mBtnRegister = null; private Button mBtnLogin = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_map); mMapView = (MapView) findViewById(R.id.bmapView); mBtnRegister = (Button) findViewById(R.id.btn_register); mBtnRegister.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startLoginActivity(true); } }); mBtnLogin = (Button) findViewById(R.id.btn_loggin); mBtnLogin.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startLoginActivity(false); } }); mOffline = new MKOfflineMap(); mOffline.init(this); mOffline.importOfflineData(); // 开启定位图层 mBaiduMap = mMapView.getMap(); mBaiduMap.setMyLocationEnabled(true); // 发起定位 mLocationClient = new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(myListener); mLocationClient.start(); mLocationClient.requestLocation(); BitmapDescriptor bitmapBlue = BitmapDescriptorFactory .fromResource(R.drawable.location_blue); LatLng point3 = new LatLng(default_des3.latitude, default_des3.longitude); OverlayOptions option3 = new MarkerOptions() .position(point3) .icon(bitmapBlue) .zIndex(9) .draggable(false); mBaiduMap.addOverlay(option3); LatLng point6 = new LatLng(default_des6.latitude, default_des6.longitude); OverlayOptions option6 = new MarkerOptions() .position(point6) .icon(bitmapBlue) .zIndex(9) .draggable(false); mBaiduMap.addOverlay(option6); BitmapDescriptor bitmapBubble1 = BitmapDescriptorFactory .fromResource(R.drawable.meeting); LatLng pointBubble = new LatLng(default_des1.latitude, default_des1.longitude); OverlayOptions optionBubble1 = new MarkerOptions() .position(pointBubble) .icon(bitmapBubble1) .zIndex(0) .draggable(false); mBaiduMap.addOverlay(optionBubble1); BitmapDescriptor bitmapBubble4 = BitmapDescriptorFactory .fromResource(R.drawable.confirm_to_meet); LatLng pointBubble4 = new LatLng(default_des4.latitude, default_des4.longitude); OverlayOptions optionBubble4 = new MarkerOptions() .position(pointBubble4) .icon(bitmapBubble4) .zIndex(0) .draggable(false); mBaiduMap.addOverlay(optionBubble4); BitmapDescriptor bitmapBubble5 = BitmapDescriptorFactory .fromResource(R.drawable.information_ok); LatLng pointBubble5 = new LatLng(default_des5.latitude, default_des5.longitude); OverlayOptions optionBubble5 = new MarkerOptions() .position(pointBubble5) .icon(bitmapBubble5) .zIndex(0) .draggable(false); mBaiduMap.addOverlay(optionBubble5); } private void startLoginActivity(boolean isRegister) { Intent intent = new Intent(getApplicationContext(), LoginActivity.class); intent.putExtra(LoginActivity.IS_REGISTER, isRegister); startActivity(intent); } @Override protected void onResume() { super.onResume(); if (SessionManager.getInstance(this).isLogin()) { finish(); } else { mMapView.onResume(); } } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); } public static class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (location == null) return; MyLocationData locData = new MyLocationData.Builder() .accuracy(0) .direction(location.getDirection()).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); BitmapDescriptor bitmap1 = BitmapDescriptorFactory .fromResource(R.drawable.my_location_small); BitmapDescriptor bitmap2 = BitmapDescriptorFactory .fromResource(R.drawable.my_location_small1); LatLng point = new LatLng(locData.latitude, locData.longitude); ArrayList<BitmapDescriptor> giflist = new ArrayList<BitmapDescriptor>(); giflist.add(bitmap1); giflist.add(bitmap2); OverlayOptions option = new MarkerOptions() .position(point) .icons(giflist) .zIndex(9) .period(60) .draggable(false); if (null != option) { mBaiduMap.addOverlay(option); } } } public BDLocationListener myListener = new MyLocationListener(); @Override public void onGetOfflineMapState(int arg0, int arg1) { } }