package com.didi.es.map.helper;
import java.util.List;
import android.location.Location;
import com.didi.es.map.base.EsMapView;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdate;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory;
import com.tencent.tencentmap.mapsdk.maps.model.CameraPosition;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
import com.tencent.tencentmap.mapsdk.maps.model.LatLngBounds;
import com.tencent.tencentmap.mapsdk.maps.model.LatLngBounds.Builder;
/**
* 地图工具类,包括缩放等
*
* @author houshengyong
* @since 2015-5-27
*/
public class EsMapHelper {
private EsMapHelper() {
}
/**
* 将一点移动到地图中心并缩放
*
* @param mapView
* @param lat
* @param lng
* @param zoom
*/
public static void setCenterAndZoom(EsMapView mapView, double lat, double lng, float zoom) {
if (null != mapView) {
CameraUpdate cu = CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(new LatLng(lat, lng)).zoom(zoom).build());
mapView.getMap().animateCamera(cu);
}
}
/**
* 将一点移动到地图中心
*
* @param mapView
* @param lat
* @param lng
*/
public static void setCenter(EsMapView mapView, double lat, double lng) {
if (null != mapView) {
CameraUpdate cu = CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(new LatLng(lat, lng)).build());
mapView.getMap().animateCamera(cu);
}
}
/**
* 缩放地图,使所有传入的经纬度点都能显示下
*
* @param mapView
* @param latLngs
* @param left
* @param right
* @param top
* @param bottom
*/
public static void zoomToSpan(EsMapView mapView, List<LatLng> latLngs, int left, int right, int top, int bottom) {
if (null != mapView && null != latLngs && latLngs.size() > 0) {
Builder boundbuilder = new LatLngBounds.Builder();
for (int i = latLngs.size() - 1; i >= 0; i--) {
boundbuilder.include(latLngs.get(i));
}
LatLngBounds bounds = boundbuilder.build();
mapView.getMap().animateCamera(CameraUpdateFactory.newLatLngBoundsRect(bounds, left, right, top, bottom));
}
}
/**
* 增量缩放地图
*
* @param mapView
* @param delat
*/
public static void zoomBy(EsMapView mapView, float delat) {
if (null != mapView) {
mapView.getMap().animateCamera(CameraUpdateFactory.zoomBy(delat));
}
}
/**
* 缩放地图到某级别
*
* @param mapView
* @param level
*/
public static void zoomTo(EsMapView mapView, float level) {
if (null != mapView) {
mapView.getMap().animateCamera(CameraUpdateFactory.zoomTo(level));
}
}
/**
* 计算两坐标点之间的直线距离,单位为米
*
* @param from
* @param to
* @return the distance
*/
public static float distanceBetween(LatLng from, LatLng to) {
if (from == null || to == null)
return 0;
float[] results = new float[5];
Location.distanceBetween(from.latitude, from.longitude, to.latitude, to.longitude, results);
return results[0];
}
/**
* 设置logo的停靠位置
*
* @param mapView
* @param anchor
* : 0左下;1右下;2右上;3左上
*/
public static void setLogoAnchor(EsMapView mapView, int anchor) {
if (null != mapView) {
if (0 == anchor || 1 == anchor || 2 == anchor || 3 == anchor) {
mapView.getMap().setLogoAnchor(anchor);
}
}
}
/**
* 设置logo是否可见
*
* @param mapView
* @param visible
*/
public static void setMapLogoVisible(EsMapView mapView, boolean visible) {
if (null != mapView) {
mapView.getMap().setLogoVisible(visible);
}
}
}