package iShamrock.Postal.util; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import com.baidu.location.BDLocation; import com.baidu.mapapi.map.*; import com.baidu.mapapi.model.LatLng; import iShamrock.Postal.R; import iShamrock.Postal.activity.publishers.PEditor; import iShamrock.Postal.entity.PostalDataItem; /** * Created by Tong on 12.28. * BaiduMApUtil implements some features of baidu map SDK. */ public class BaiduMapUtil { private BaiduMap mBaiduMap; private MapView mMapView; private Context context; /** * initialize necessary properties of Baidu Map. * * @param context, recommend getApplicationContext() instead of this. * @param mBaiduMap, the map to deal with. Dependency injection. */ public void initialize(Context context, BaiduMap mBaiduMap, MapView mMapView) { mBaiduMap.setMyLocationEnabled(true); mMapView.showZoomControls(false); this.mBaiduMap = mBaiduMap; this.mMapView = mMapView; this.context = context; } /** * Add a Marker(or a Pin) on map */ public void addMarker(PostalDataItem data) { Bitmap origMarkerImage = ((BitmapDrawable) context.getResources().getDrawable(R.drawable.stamp)).getBitmap(); Bitmap resizedMarkerImage = Bitmap.createScaledBitmap(origMarkerImage, 150, 150, true); BitmapDescriptor bitmap = BitmapDescriptorFactory.fromBitmap(resizedMarkerImage); LatLng marker = new LatLng(data.location[0], data.location[1]); OverlayOptions option = new MarkerOptions() .position(marker) .icon(bitmap); mBaiduMap.addOverlay(option); mBaiduMap.setOnMarkerClickListener(new MyOnMarkerClickListener(data)); } public void locateTo(BDLocation loc) { MyLocationData locData = new MyLocationData.Builder() .accuracy(loc.getRadius()) .direction(100).latitude(loc.getLatitude()) .longitude(loc.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); LatLng cenpt = new LatLng(locData.latitude, locData.longitude); MapStatus mMapStatus = new MapStatus.Builder() .target(cenpt) .zoom(15) .build(); MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus); mBaiduMap.setMapStatus(mMapStatusUpdate); } class MyOnMarkerClickListener implements BaiduMap.OnMarkerClickListener { private PostalDataItem data; MyOnMarkerClickListener(PostalDataItem data) { this.data = data; } @Override public boolean onMarkerClick(Marker marker) { Intent intent = new Intent(); intent.setClass(context, PEditor.class); Bundle bundle = new Bundle(); bundle.putSerializable("data", data); intent.putExtras(bundle); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); context.startActivity(intent); return false; } } }