package
com.ercompany.minggle.android.apt.activity.general;
import
java.util.ArrayList;
import
android.content.Intent;
import
android.location.Criteria;
import
android.location.Location;
import
android.location.LocationManager;
import
android.os.Bundle;
import
android.support.v4.app.FragmentActivity;
import
android.view.View;
import
android.widget.TextView;
import
com.ercompany.minggle.android.apt.R;
import
com.ercompany.minggle.android.apt.item.LocationItem;
import
com.ercompany.minggle.android.apt.ui.NavigationBar;
import
com.google.android.gms.common.GooglePlayServicesUtil;
import
com.google.android.gms.maps.CameraUpdateFactory;
import
com.google.android.gms.maps.GoogleMap;
import
com.google.android.gms.maps.SupportMapFragment;
import
com.google.android.gms.maps.model.BitmapDescriptorFactory;
import
com.google.android.gms.maps.model.CameraPosition;
import
com.google.android.gms.maps.model.MarkerOptions;
import
com.google.android.maps.MapController;
public
class
MapDialogActivity
extends
FragmentActivity
implements
android.location.LocationListener, View.OnClickListener{
public
static
interface
OnMapDialogListener{
public
void
setTexts();
public
void
setLocations();
}
private
GoogleMap gMap;
private
LocationManager locationManager;
private
MapController mapController;
private
ArrayList<LocationItem> locations =
new
ArrayList<LocationItem>();
private
String bestProvider;
private
String navBar;
private
int
zoomSize;
private
OnMapDialogListener listener;
public
void
onCreate(Bundle icicle) {
super
.onCreate(icicle);
setContentView(R.layout.dialog_map);
zoomSize =
14
;
Intent intent = getIntent();
locations = intent.getParcelableArrayListExtra(
"locations"
);
navBar = intent.getStringExtra(
"navbar"
);
findViewById(R.id.btn_map_close).setOnClickListener(
this
);
findViewById(R.id.zoom_plus).setOnClickListener(
this
);
findViewById(R.id.zoom_minus).setOnClickListener(
this
);
((NavigationBar)findViewById(R.id.map_title)).setTitle(navBar);
((TextView)findViewById(R.id.txt_title)).setText(locations.get(
0
).getTitle());
((TextView)findViewById(R.id.txt_info_top)).setText(locations.get(
0
).getaddressTop());
((TextView)findViewById(R.id.txt_info_middle)).setText(locations.get(
0
).getaddressMiddel());
((TextView)findViewById(R.id.txt_info_bottom)).setText(locations.get(
0
).getaddressBottom());
GooglePlayServicesUtil.isGooglePlayServicesAvailable(
this
);
locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
bestProvider = locationManager.getBestProvider(
new
Criteria(),
true
);
if
(bestProvider !=
null
){
locationManager.requestLocationUpdates(bestProvider,
0
,
0
,
this
);
setUpMapIfNeeded();
}
}
private
void
setUpMapIfNeeded(){
if
(gMap ==
null
){
gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map_mapview)).getMap();
for
(LocationItem loc: locations) {
CameraPosition cp =
new
CameraPosition.Builder().target(loc.getLatLng()).zoom(zoomSize).build();
MarkerOptions marker =
new
MarkerOptions().position(loc.getLatLng()).title(loc.getTitle()).snippet(loc.getaddressTop())
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_ico_marker)).visible(
true
);
gMap.moveCamera(CameraUpdateFactory.newCameraPosition(cp));
gMap.addMarker(marker);
}
}
if
(gMap !=
null
) {
setUpMap();
}
}
private
void
setUpMap(){
gMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
gMap.setMyLocationEnabled(
true
);
gMap.getMyLocation();
gMap.getUiSettings().setCompassEnabled(
false
);
gMap.getUiSettings().setZoomControlsEnabled(
false
);
gMap.getUiSettings().setRotateGesturesEnabled(
false
);
}
@Override
protected
void
onResume() {
super
.onResume();
setUpMapIfNeeded();
}
@Override
protected
void
onPause() {
super
.onPause();
locationManager.removeUpdates(
this
);
}
@Override
public
void
onClick(View v) {
if
(v.getId() == R.id.btn_map_close){
finish();
}
else
if
(v.getId() == R.id.zoom_plus){
onZoomControl(
true
);
}
else
if
(v.getId() == R.id.zoom_minus){
onZoomControl(
false
);
}
}
private
void
onZoomControl(
boolean
isZoom){
if
(zoomSize <
22
|| zoomSize >
18
){
if
(isZoom){
zoomSize++;
mapController.setZoom(zoomSize);
}
else
{
zoomSize--;
mapController.setZoom(zoomSize);
}
}
else
return
;
}
@Override
public
void
onProviderDisabled(String provider) {
}
@Override
public
void
onProviderEnabled(String provider) {
}
@Override
public
void
onStatusChanged(String provider,
int
status, Bundle extras) {
}
@Override
public
void
onLocationChanged(Location location) {
}
public
void
setMapDialogListener(OnMapDialogListener listener){
this
.listener = listener;
}
}