package cn.mutils.app.ui;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.AMap.InfoWindowAdapter;
import com.amap.api.maps2d.AMapOptions;
import com.amap.api.maps2d.CameraUpdateFactory;
import com.amap.api.maps2d.MapView;
import com.amap.api.maps2d.UiSettings;
import com.amap.api.maps2d.model.BitmapDescriptorFactory;
import com.amap.api.maps2d.model.CameraPosition;
import com.amap.api.maps2d.model.LatLng;
import com.amap.api.maps2d.model.Marker;
import com.amap.api.maps2d.model.MarkerOptions;
import cn.mutils.app.R;
@SuppressWarnings("unused")
@SuppressLint("InflateParams")
public class AMapView extends MapView {
public AMapView(Context context) {
super(context);
init(context, null);
}
public AMapView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public AMapView(Context context, AMapOptions options) {
super(context, options);
init(context, null);
}
public AMapView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs);
}
protected void init(Context context, AttributeSet attrs) {
this.onCreate(null);
AMap map = this.getMap();
UiSettings settings = map.getUiSettings();
settings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);
settings.setScaleControlsEnabled(true);// 比例尺
settings.setZoomControlsEnabled(true);// 缩放
settings.setCompassEnabled(true);// 指南针
map.setInfoWindowAdapter(new InfoAdapter());
}
public void lookAt(double latitude, double longitude) {
lookAt(latitude, longitude, null, null);
}
public void lookAt(double latitude, double longitude, String title) {
lookAt(latitude, longitude, title, null);
}
public void lookAt(double latitude, double longitude, String title, String snippet) {
LatLng latLng = new LatLng(latitude, longitude);
AMap map = this.getMap();
map.clear();
MarkerOptions markerOptions = new MarkerOptions().position(latLng).title(title).snippet(snippet)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
Marker marker = map.addMarker(markerOptions);
if (title != null) {
marker.showInfoWindow();
}
map.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(latLng, 15, 0, 0)));
}
class InfoAdapter implements InfoWindowAdapter {
@Override
public View getInfoWindow(Marker marker) {
View v = LayoutInflater.from(getContext()).inflate(R.layout.amap_infowindow, null);
TextView title = (TextView) v.findViewById(R.id.title);
if (marker.getTitle() == null) {
title.setText("");
} else {
title.setText(marker.getTitle());
}
TextView snippet = (TextView) v.findViewById(R.id.snippet);
if (marker.getSnippet() == null) {
snippet.setVisibility(View.GONE);
} else {
snippet.setText(marker.getSnippet());
}
return v;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
}
}