@Override public boolean onMarkerClick(Marker arg0) { if (isClickStart) { arg0.setSnippet("点击此处选择为起点"); } else if (isClickTarget) { arg0.setSnippet("点击此处选择为终点"); } arg0.showInfoWindow(); return false; }
/** 设置点击Marker的InfoWindow事件 */ @Override public void onInfoWindowClick(Marker arg0) { if (isClickStart) { startTextView.setText(arg0.getTitle()); startPoint = convertToLatLonPoint(arg0.getPosition()); isClickStart = false; isClickTarget = true; } else if (isClickTarget) { endTextView.setText(arg0.getTitle()); endPoint = convertToLatLonPoint(arg0.getPosition()); isClickStart = true; isClickTarget = false; } arg0.hideInfoWindow(); }
/** 添加驾车路线添加到地图上显示。 */ public void addToMap() { initPolylineOptions(); try { if (mAMap == null) { return; } if (mWidth == 0 || drivePath == null) { return; } mLatLngsOfPath = new ArrayList<LatLng>(); tmcs = new ArrayList<TMC>(); List<DriveStep> drivePaths = drivePath.getSteps(); mPolylineOptions.add(startPoint); for (DriveStep step : drivePaths) { List<LatLonPoint> latlonPoints = step.getPolyline(); List<TMC> tmclist = step.getTMCs(); tmcs.addAll(tmclist); // addDrivingStationMarkers(step, convertToLatLng(latlonPoints.get(0))); for (LatLonPoint latlonpoint : latlonPoints) { mPolylineOptions.add(convertToLatLng(latlonpoint)); mLatLngsOfPath.add(convertToLatLng(latlonpoint)); } } mPolylineOptions.add(endPoint); if (startMarker != null) { startMarker.remove(); startMarker = null; } if (endMarker != null) { endMarker.remove(); endMarker = null; } // addStartAndEndMarker(); // addThroughPointMarker(); if (isColorfulline && tmcs.size() > 0) { colorWayUpdate(tmcs); } else { showPolyline(); } } catch (Throwable e) { e.printStackTrace(); } }
@Override public View getInfoWindow(final Marker marker) { View view = getLayoutInflater().inflate(R.layout.poikeywordsearch_uri, null); TextView title = (TextView) view.findViewById(R.id.title); title.setText(marker.getTitle()); TextView snippet = (TextView) view.findViewById(R.id.snippet); snippet.setText(marker.getSnippet()); ImageButton button = (ImageButton) view.findViewById(R.id.start_amap_app); // 调起高德地图app导航功能 button.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { startAMapNavi(marker); } }); return view; }
/** 去掉DriveLineOverlay上的线段和标记。 */ public void removeFromMap() { try { if (startMarker != null) { startMarker.remove(); } if (endMarker != null) { endMarker.remove(); } for (Marker marker : stationMarkers) { marker.remove(); } for (Polyline line : allPolyLines) { line.remove(); } if (this.throughPointMarkerList != null && this.throughPointMarkerList.size() > 0) { for (int i = 0; i < this.throughPointMarkerList.size(); i++) { this.throughPointMarkerList.get(i).remove(); } this.throughPointMarkerList.clear(); } } catch (Throwable e) { e.printStackTrace(); } }
/** 调起高德地图导航功能,如果没安装高德地图,会进入异常,可以在异常中处理,调起高德地图app的下载页面 */ public void startAMapNavi(Marker marker) { // 构造导航参数 NaviPara naviPara = new NaviPara(); // 设置终点位置 naviPara.setTargetPoint(marker.getPosition()); // 设置导航策略,这里是避免拥堵 naviPara.setNaviStyle(AMapUtils.DRIVING_AVOID_CONGESTION); try { // 调起高德地图导航 AMapUtils.openAMapNavi(naviPara, getApplicationContext()); } catch (com.amap.api.maps.AMapException e) { // 如果没安装会进入异常,调起下载页面 AMapUtils.getLatestAMapApp(getApplicationContext()); } }
@Override public boolean onMarkerClick(Marker marker) { marker.showInfoWindow(); return false; }
@Override public View getInfoWindow(Marker arg0) { return getInfoView(context, arg0.getTitle()); }