package com.jqyd.newprocess;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import android.widget.TextView;
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.OnMapLoadedListener;
import com.amap.api.maps.AMap.OnMarkerClickListener;
import com.amap.api.maps.AMap.OnMarkerDragListener;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
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.amap.api.maps.model.PolylineOptions;
import com.jqyd.manager.R;
import com.jqyd.model.PositionInfo;
public class Gzgj_new extends Activity implements OnMarkerClickListener,
OnInfoWindowClickListener, OnMarkerDragListener, OnMapLoadedListener,
OnClickListener, InfoWindowAdapter {
MapView mapView = null;
private AMap aMap;
private MarkerOptions markerOption;
String content = "";
private static final String TAG = "wzcx";
Spanned spContent = null;
private Marker marker;
private List<Marker> lMarker = new ArrayList<Marker>();
// 新增
View popView;
int i;
private List<LatLng> llList = new ArrayList<LatLng>();
private ArrayList<PositionInfo> locations = null;
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题栏
setContentView(R.layout.wzcx1);
Log.e("Wzcx", "Wzcx--------");
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
init();
/**
* 显示被定为人的位置信息
*/
Intent intent = getIntent();
locations = (ArrayList<PositionInfo>) intent.getSerializableExtra("locList");
for (int i=0;i<locations.size();i++) {
PositionInfo position = locations.get(i);
PositionInfo endPos = null;
Double lon = position.getLon();
Double lat = position.getLat();
String addtime = position.getAddTime().split("-")[1] + "/"
+ position.getAddTime().split("-")[2];
// content = position.getZdmc() + "#" + "手机号码:" + position.getSjhm()
// + "时间:" + addtime + "经度:" + position.getLon() + "纬度:"
// + position.getLat() + "详情:" + position.getContent();
LatLng ll = new LatLng(position.getLat(), position.getLon());
llList.add(ll);
addMarkersToMap(ll, position.getLat()+","+position.getLon());// 往地图上添加marker
if(i>=locations.size()-1){
endPos = locations.get(locations.size()-1);
}else{
endPos = locations.get(i+1);
}
aMap.addPolyline((new PolylineOptions())
.add(new LatLng(position.getLat(), position.getLon()),new LatLng(endPos.getLat(), endPos.getLon()))
.width(10).setDottedLine(false).geodesic(false)
.color(Color.BLUE));
}
}
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
aMap.getUiSettings().setTiltGesturesEnabled(false);
setUpMap();
}
}
private void setUpMap() {
aMap.setOnMarkerDragListener(this);// 设置marker可拖拽事件监听器
aMap.setOnMapLoadedListener(this);// 设置amap加载成功事件监听器
aMap.setOnMarkerClickListener(this);// 设置点击marker事件监听器
aMap.setOnInfoWindowClickListener(this);// 设置点击infoWindow事件监听器
aMap.setInfoWindowAdapter(this);// 设置自定义InfoWindow样式
}
/**
* 在地图上添加marker
*/
private void addMarkersToMap(LatLng ll, String title) {
markerOption = new MarkerOptions();
markerOption.position(ll);
markerOption.title(title);
markerOption.perspective(true);
// markerOption.draggable(true);//是否可用移动
markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(), R.drawable.poi_1)));
// 将Marker设置为贴地显示,可以双指下拉看效果
markerOption.setFlat(true);
lMarker.add(aMap.addMarker(markerOption));
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
public void showToast(String showString) {
Toast.makeText(getApplicationContext(), showString, Toast.LENGTH_SHORT)
.show();
}
/**
* 监听自定义infowindow窗口的infocontents事件回调
*/
@Override
public View getInfoContents(final Marker marker) {
popView = super.getLayoutInflater().inflate(R.layout.pop, null);
setView(marker);
return popView;
}
/**
* 监听自定义infowindow窗口的infowindow事件回调
*/
@Override
public View getInfoWindow(final Marker marker) {
popView = super.getLayoutInflater().inflate(R.layout.pop, null);
setView(marker);
return popView;
}
private void setView(final Marker marker) {
TextView title = (TextView) popView.findViewById(R.id.map_bubbleTitle);
ImageView close = (ImageView) popView
.findViewById(R.id.map_bubbleImage);
TextView phone = (TextView) popView.findViewById(R.id.map_bubbleText);
TextView time = (TextView) popView.findViewById(R.id.time);
TextView lat = (TextView) popView.findViewById(R.id.lat);
TextView lng = (TextView) popView.findViewById(R.id.lng);
TextView text = (TextView) popView.findViewById(R.id.text);
for (PositionInfo pos : locations) {
String latlon = pos.getLat()+","+pos.getLon();
if (latlon.equals(marker.getTitle())) {
title.setText(pos.getZdmc());
phone.setText(pos.getSjhm());
time.setText("时间:" + pos.getAddTime().split("-")[1] + "/"
+ pos.getAddTime().split("-")[2]);
lat.setText("经度:" + pos.getLat());
lng.setText("纬度:" + pos.getLon());
text.setText("详细信息:" + pos.getContent());
}
}
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
marker.hideInfoWindow();
}
});
}
@Override
public void onClick(View v) {
}
/**
* 监听amap地图加载成功事件回调
*/
@Override
public void onMapLoaded() {
changeCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(
llList.get(llList.size() - 1), 18, 0, 30)), null);
}
/**
* 监听拖动marker时事件回调
*/
@Override
public void onMarkerDrag(Marker arg0) {
}
/**
* 监听拖动marker结束事件回调
*/
@Override
public void onMarkerDragEnd(Marker arg0) {
}
/**
* 监听开始拖动marker事件回调
*/
@Override
public void onMarkerDragStart(Marker arg0) {
}
@Override
public void onInfoWindowClick(Marker arg0) {
}
/**
* 对marker标注点点击响应事件
*/
@Override
public boolean onMarkerClick(Marker marker) {
// for(int i = 0 ; i<lMarker.size() ; i++){
// if(marker.equals(lMarker.get(i))){
// marker.showInfoWindow();
// }
// }
return false;
}
/**
* 根据动画按钮状态,调用函数animateCamera或moveCamera来改变可视区域
*/
private void changeCamera(CameraUpdate update, CancelableCallback callback) {
// aMap.animateCamera(update, 1000, callback);
aMap.moveCamera(update);
}
}