package org.droidplanner.android.maps;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentSender;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.location.Location;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.Api;
import com.google.android.gms.location.LocationAvailability;
import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.Projection;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.PolygonOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.gms.maps.model.TileOverlay;
import com.google.android.gms.maps.model.TileOverlayOptions;
import com.google.android.gms.maps.model.VisibleRegion;
import com.o3dr.android.client.Drone;
import com.o3dr.services.android.lib.coordinate.LatLong;
import com.o3dr.services.android.lib.coordinate.LatLongAlt;
import com.o3dr.services.android.lib.drone.attribute.AttributeEvent;
import com.o3dr.services.android.lib.drone.attribute.AttributeType;
import com.o3dr.services.android.lib.drone.property.FootPrint;
import com.o3dr.services.android.lib.drone.property.Gps;
import com.o3dr.services.android.lib.util.googleApi.GoogleApiClientManager;
import com.o3dr.services.android.lib.util.googleApi.GoogleApiClientManager.GoogleApiClientTask;
import org.droidplanner.android.DroidPlannerApp;
import org.droidplanner.android.R;
import org.droidplanner.android.fragments.SettingsFragment;
import org.droidplanner.android.graphic.map.GraphicHome;
import org.droidplanner.android.maps.providers.DPMapProvider;
import org.droidplanner.android.maps.providers.google_map.DownloadMapboxMapActivity;
import org.droidplanner.android.maps.providers.google_map.GoogleMapPrefConstants;
import org.droidplanner.android.maps.providers.google_map.GoogleMapPrefFragment;
import org.droidplanner.android.maps.providers.google_map.tiles.TileProviderManager;
import org.droidplanner.android.maps.providers.google_map.tiles.arcgis.ArcGISTileProviderManager;
import org.droidplanner.android.maps.providers.google_map.tiles.mapbox.MapboxTileProviderManager;
import org.droidplanner.android.maps.providers.google_map.tiles.mapbox.MapboxUtils;
import org.droidplanner.android.maps.providers.google_map.tiles.mapbox.offline.MapDownloader;
import org.droidplanner.android.proxy.mission.item.MissionItemProxy;
import org.droidplanner.android.utils.MapUtils;
import org.droidplanner.android.utils.prefs.AutoPanMode;
import org.droidplanner.android.utils.prefs.DroidPlannerPrefs;
import org.jetbrains.annotations.NotNull;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import timber.log.Timber;
public class GoogleMapFragment extends SupportMapFragment implements DPMap,
GoogleApiClientManager.ManagerListener {
private static final long USER_LOCATION_UPDATE_INTERVAL = 30000; // ms
private static final long USER_LOCATION_UPDATE_FASTEST_INTERVAL = 5000; // ms
private static final float USER_LOCATION_UPDATE_MIN_DISPLACEMENT = 0; // m
private static final float GO_TO_MY_LOCATION_ZOOM = 17f;
private static final int ONLINE_TILE_PROVIDER_Z_INDEX = -1;
private static final int OFFLINE_TILE_PROVIDER_Z_INDEX = -2;
private static final int GET_DRAGGABLE_FROM_MARKER_INFO = -1;
private static final int IS_DRAGGABLE = 0;
private static final int IS_NOT_DRAGGABLE = 1;
private static final IntentFilter eventFilter = new IntentFilter();
static {
eventFilter.addAction(AttributeEvent.GPS_POSITION);
eventFilter.addAction(SettingsFragment.ACTION_MAP_ROTATION_PREFERENCE_UPDATED);
}
private final static Api<? extends Api.ApiOptions.NotRequiredOptions>[] apisList = new Api[]{LocationServices.API};
private final BroadcastReceiver eventReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
switch (action) {
case AttributeEvent.GPS_POSITION:
if (mPanMode.get() == AutoPanMode.DRONE) {
final Drone drone = getDroneApi();
if (!drone.isConnected())
return;
final Gps droneGps = drone.getAttribute(AttributeType.GPS);
if (droneGps != null && droneGps.isValid()) {
final LatLong droneLocation = droneGps.getPosition();
updateCamera(droneLocation);
}
}
break;
case SettingsFragment.ACTION_MAP_ROTATION_PREFERENCE_UPDATED:
getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
setupMapUI(googleMap);
}
});
break;
}
}
};
private final Map<Marker, MarkerInfo> markersMap = new HashMap<>();
private final Map<Polyline, PolylineInfo> polylinesMap = new HashMap<>();
private DroidPlannerPrefs mAppPrefs;
private final AtomicReference<AutoPanMode> mPanMode = new AtomicReference<AutoPanMode>(
AutoPanMode.DISABLED);
private final Handler handler = new Handler();
private final LocationCallback locationCb = new LocationCallback() {
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
}
@Override
public void onLocationResult(LocationResult result) {
super.onLocationResult(result);
final Location location = result.getLastLocation();
if (location == null)
return;
//Update the user location icon.
if (userMarker == null) {
final MarkerOptions options = new MarkerOptions()
.position(new LatLng(location.getLatitude(), location.getLongitude()
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
FreeDroneGCS 一个无人机地面站系统.zip (2000个子文件)
libuvccamera-release.aar 1.47MB
sliding-up-panel-3.3.0.aar 37KB
shimmer-android-release.aar 14KB
IDroneApi.aidl 2KB
IDroidPlannerServices.aidl 1KB
IApiListener.aidl 632B
IObserver.aidl 627B
ICommandListener.aidl 580B
IMavlinkObserver.aidl 469B
MagnetometerCalibrationProgress.aidl 114B
MagnetometerCalibrationStatus.aidl 112B
MagnetometerCalibrationResult.aidl 112B
StructureScanner.aidl 95B
CameraDetail.aidl 91B
ConnectionParameter.aidl 88B
Survey.aidl 85B
ConnectionResult.aidl 85B
DroneSharePrefs.aidl 84B
ReturnToMeState.aidl 82B
MissionItem.aidl 82B
MavlinkMessageWrapper.aidl 80B
GuidedState.aidl 78B
VehicleMode.aidl 78B
Parameters.aidl 77B
EkfStatus.aidl 76B
FootPrint.aidl 76B
Vibration.aidl 76B
LatLongAlt.aidl 75B
Attitude.aidl 75B
Altitude.aidl 75B
FollowState.aidl 74B
Battery.aidl 74B
FollowType.aidl 73B
Mission.aidl 73B
Signal.aidl 73B
State.aidl 72B
Speed.aidl 72B
Action.aidl 71B
Home.aidl 71B
Type.aidl 71B
LatLong.aidl 70B
Gps.aidl 70B
gradlew.bat 2KB
maven-push.gradle 4KB
build.gradle 3KB
build.gradle 2KB
settings.gradle 627B
Inkfile 7KB
BaiduLBS_Android.jar 1.38MB
protobuf-java-2.5.0.jar 521KB
jeromq-0.3.4.jar 182KB
droneapi-java-0.3-SNAPSHOT.jar 170KB
d2xx.jar 129KB
sius-0.3.1-SNAPSHOT.jar 105KB
gradle-wrapper.jar 49KB
GoogleMapFragment.java 54KB
BaiduMapFragment.java 36KB
CommonApiUtils.java 36KB
SlidingDrawer.java 35KB
DroneApi.java 33KB
MissionProxy.java 32KB
GenericMavLinkDrone.java 32KB
SettingsFragment.java 31KB
MAVLinkPacket.java 31KB
DroidPlannerPrefs.java 27KB
MAV_CMD.java 25KB
ArduPilot.java 25KB
AbstractWheel.java 23KB
ControllerLinkManager.java 23KB
Drone.java 23KB
ProxyUtils.java 21KB
MissionDetailFragment.java 21KB
ConnectionParameter.java 21KB
EditorActivity.java 21KB
TTSNotificationProvider.java 20KB
ActionBarTelemFragment.java 20KB
FlightDataFragment.java 19KB
FragmentSetupCompass.java 18KB
TLVMessageParser.java 18KB
DroidPlannerApp.java 18KB
WifiConnectionHandler.java 17KB
CopterFlightControlFragment.java 17KB
ExperimentalApi.java 17KB
MavLinkConnection.java 17KB
MavLinkDroneManager.java 17KB
ParamsFragment.java 17KB
FilterableArrayAdapter.java 17KB
ArduSolo.java 17KB
VideoManager.java 16KB
MissionSurveyFragment.java 16KB
MapDownloader.java 15KB
MathUtils.java 15KB
DroneMap.java 15KB
SoloComp.java 14KB
SuperUI.java 14KB
DrawerNavigationUI.java 14KB
EditorToolsFragment.java 14KB
SoloCameraApi.java 13KB
DroneshareLoginFragment.java 13KB
PlaneFlightControlFragment.java 13KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
极致人生-010
- 粉丝: 3313
- 资源: 3077
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ASCII American Standard Code for Information Interchange
- 一个chm格式的 SQL 函数手册-SQL语言手册文档
- 计算当前月份的天数和剩余天数
- 基于ARM的指令调度和延迟分支
- 基于Vue和TypeScript的极简聊天应用设计源码 - HasChat
- 基于Vue2全家桶和Zcool数据的图片收集网站设计源码 - cool-picture
- 基于C和C++的二维绘制工具设计源码 - DrawPro
- Object.defineProperty 的 IE 补丁object-defineproperty-ie-master.zip
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功