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); } }