package com.jiuqi.njt.son;
import java.util.ArrayList;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.text.Html;
import android.text.Spanned;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewStub;
import android.widget.Toast;
import com.amap.api.maps.AMap;
import com.amap.api.maps.AMap.CancelableCallback;
import com.amap.api.maps.AMap.InfoWindowAdapter;
import com.amap.api.maps.AMap.OnInfoWindowClickListener;
import com.amap.api.maps.AMap.OnMapClickListener;
import com.amap.api.maps.AMap.OnMarkerClickListener;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.SupportMapFragment;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.jiuqi.lbsinterface.bean.UserPositionBean;
import com.jiuqi.njt.R;
import com.jiuqi.njt.util.DateUtil;
import com.jiuqi.njt.util.TitleBarUtil;
import com.jiuqi.njt.util.UIUtil;
public class WzcxShow extends FragmentActivity implements OnMarkerClickListener,
OnMapClickListener, OnInfoWindowClickListener, InfoWindowAdapter {
private AMap aMap;
private static int zoomLevel = 15;// 放大倍数
private LatLng point;
String content = "";
Spanned spContent = null;
// 新增
View popView;
int i;
ArrayList<UserPositionBean> locations = null;
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wzcx);
ViewStub rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub);
TitleBarUtil.createTitleBar(this, rlTitleBar,
getResources().getString(R.string.LocationTxt),
new OnClickListener() {
@Override
public void onClick(View v) {
releaseListener();
WzcxShow.this.finish();
}
},"详情", new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(WzcxShow.this,LocationDetail.class);
i.putExtra("locList", locations);
startActivity(i);
}
});
aMap = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.mylocationview)).getMap();
if (null == aMap) {
UIUtil.showMsg(WzcxShow.this, "初始化失败");
}
/**
* 显示被定为人的位置信息
*/
Intent intent = getIntent();
locations = (ArrayList<UserPositionBean>) intent
.getSerializableExtra("locList");
setUpMap();
}
// 设置地图属性
private void setUpMap() {
addMarkersToMap();
registerListener();// 注册监听
mapUISetting();
}
private void addMarkersToMap() {
for (UserPositionBean position : locations) {
double lon = position.getLongitude();
double lat = position.getLatitude();
if(lon == 0.0 && lat == 0.0){
continue;
}
String date = DateUtil.getTimeStamp(position.getCreateDate(),
DateUtil.MM_DD_HH_MM_SS);
String content = "手机号码:" + position.getSim() + "<br>时间:" + date
+ "<br>经度:" + lon + "</br>" + "<br>纬度:" + lat + "</br>"
+ "<br>详情:" + splitStr(position.getContent(),10) + "</br>";
LatLng ll = new LatLng(lat, lon);
addMarker(ll, "目标名称:" + position.getUserName(),
Html.fromHtml(content).toString());
if (point == null) {
point = ll;
}
}
updateView(point);
}
private String splitStr (String str,int length){
StringBuffer sbBuffer = new StringBuffer();
if(str.length()<= length){
sbBuffer.append(str);
}else{
int len = str.length()/length;
for(int i =0;i<=len;i++){
sbBuffer.append("</br>");
if(length<=str.length() && i!=len){
sbBuffer.append(str.substring(i*length, (i+1)*length));
}else {
sbBuffer.append(str.substring(i*length, str.length()));
}
sbBuffer.append("<br>");
}
}
return sbBuffer.toString();
}
private void mapUISetting() {
UiSettings aUiSettings = aMap.getUiSettings();
aUiSettings.setScaleControlsEnabled(true);// 设置地图默认的比例尺是否显示
aUiSettings.setZoomControlsEnabled(true);// 设置地图默认的缩放按钮
}
private void addMarker(LatLng poi, String title, String snippet) {
Marker startMarker = aMap.addMarker((new MarkerOptions()).position(poi)
.icon(BitmapDescriptorFactory.defaultMarker()).title(title)
.snippet(snippet));
startMarker.showInfoWindow();
}
// 切换视图
private void updateView(LatLng poi) {
if(poi == null){
Toast.makeText(WzcxShow.this, "没有可显示的位置信息", Toast.LENGTH_LONG).show();
}else{
CameraPosition camerapoint = new CameraPosition.Builder().target(poi)
.zoom(zoomLevel).bearing(0).tilt(45).build();
changeCamera(CameraUpdateFactory.newCameraPosition(camerapoint), null);
}
}
/**
* 根据动画按钮状态,调用函数animateCamera或moveCamera来改变可视区
*
*/
private void changeCamera(CameraUpdate update, CancelableCallback callback) {
aMap.moveCamera(update);
}
private void registerListener() {
aMap.setOnMapClickListener(WzcxShow.this);
aMap.setOnMarkerClickListener(WzcxShow.this);
aMap.setOnInfoWindowClickListener(WzcxShow.this);
aMap.setInfoWindowAdapter(WzcxShow.this);
}
private void releaseListener() {
aMap.setOnMapClickListener(null);
aMap.setOnMarkerClickListener(null);
aMap.setOnInfoWindowClickListener(null);
aMap.setInfoWindowAdapter(null);
}
public void showToast(String showString) {
Toast.makeText(getApplicationContext(), showString, Toast.LENGTH_SHORT)
.show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
releaseListener();
}
return super.onKeyDown(keyCode, event);
}
@Override
public View getInfoContents(Marker arg0) {
return null;
}
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
@Override
public void onInfoWindowClick(Marker marker) {
if(marker.isInfoWindowShown()){
marker.hideInfoWindow();
}
}
@Override
public void onMapClick(LatLng arg0) {
}
@Override
public boolean onMarkerClick(Marker m) {
return false;
}
}