高德地图android拖动地图,建议高德地图添加地图拖动事件,添加方法如内容所述...
我下面的实现方法肯定是错误的,不知道如何将高德地图fragment添加到UZWebView中的,能否帮给我指点一下。
package com.abc.amap;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.RelativeLayout;
import com.uzmap.pkg.uzcore.UZWebView;
import com.uzmap.pkg.uzcore.uzmodule.UZModule;
import com.uzmap.pkg.uzcore.uzmodule.UZModuleContext;
/**
* 该类映射至Javascript中moduleDemo对象
* Js Example:
* var module = api.require('moduleDemo');
* module.xxx();
* @author APICloud
*
*/
public class OtanAMapModule extends UZModule {
private AmapFragment amapFragment = null;
public OtanAMapModule(UZWebView webView) {
super(webView);
}
/**
* 获得地图中心点
* @param moduleContext
*/
public void jsmethod_getMapCenter(final UZModuleContext moduleContext){
JSONObject ret = new JSONObject();
try {
ret.put("lat",AmapFragment.getCenter().latitude);
ret.put("lng",AmapFragment.getCenter().longitude);
} catch (JSONException e) {
e.printStackTrace();
}
moduleContext.success(ret, true);
}
/**
* 打开高德地图
* @param moduleContext
*/
public void jsmethod_open(final UZModuleContext moduleContext)
{
//(1)获得要显示的高德地图窗口位置
int x = moduleContext.optInt("x");
int y = moduleContext.optInt("y");
int w = moduleContext.optInt("w");
int h = moduleContext.optInt("h");
if(w == 0){
w = ViewGroup.LayoutParams.MATCH_PARENT;
}
if(h == 0){
h = ViewGroup.LayoutParams.MATCH_PARENT;
}
//(3)构造mapView显示的布局
ViewGroup.MarginLayoutParams marginLayoutParams =new ViewGroup.MarginLayoutParams(w,h);
marginLayoutParams.setMargins(x,y,0,0);
//(5) 获得当前的Activity
Activity webActivity = activity();
//(6) 获得进行权限检测
Intent intent = new Intent(context(), CheckPermissionsActivity.class);
startActivity(intent);
//(7) 显示高德地图
if (amapFragment == null) {
amapFragment = new AmapFragment();
amapFragment.setMarginLayoutParams(marginLayoutParams);
FragmentManager fragmentManager = webActivity.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(amapFragment, "amap");
fragmentTransaction.commit();
}
}
}
===============================================
package com.abc.amap;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.app.Fragment;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.app.Activity;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
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.MyLocationStyle;
/**
* TODO: document your custom view class.
*/
public class AmapFragment extends Fragment implements AMap.OnCameraChangeListener, AMap.OnMapClickListener, AMap.OnMapLoadedListener,AMapLocationListener {
private String mExampleString; // TODO: use a default from R.string...
private int mExampleColor = Color.RED; // TODO: use a default from R.color...
private float mExampleDimension = 0; // TODO: use a default from R.dimen...
private Drawable mExampleDrawable;
private TextPaint mTextPaint;
private float mTextWidth;
private float mTextHeight;
// ------------------开始---------------------------//
//定义地图对象
private AMap aMap = null;
private MapView mapView = null;
private Marker marker = null;
private MyLocationStyle myLocationStyle = null;
private MarkerOptions markerOption = null;
private Boolean isFirstLocation = false;
private Activity mActivity;
private ViewGroup.MarginLayoutParams marginLayoutParams = null;
//声明AMapLocationClient类对象
private AMapLocationClient mLocationClient = null;
//声明AMapLocationClientOption对象
public AMapLocationClientOption mLocationOption = null;
/**
* 定义地图中心点的坐标
*/
private static LatLng mapCenterLocation = null;
/**
* 设置位置参数
* @param marginLayoutParams
*/
public void setMarginLayoutParams(ViewGroup.MarginLayoutParams marginLayoutParams){
this.marginLayoutParams = marginLayoutParams;
}
/**
* 获得地图中心点的坐标
* @return
*/
public static LatLng getCenter(){
return mapCenterLocation;
}
//-----------------(结束)----------------------//
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// =================(开始)====================== //
mActivity = getActivity();
View view = View.inflate(mActivity, R.layout.sample_amap_view, null);
//设置布局参数
view.setLayoutParams(marginLayoutParams);
//1. 实现地图渲染
mapView = (MapView) view.findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法必须重写
aMap = mapView.getMap();
//2. 初始化定位
mLocationClient = new AMapLocationClient(getActivity().getApplicationContext());
//初始化AMapLocationClientOption对象
mLocationOption = new AMapLocationClientOption();
/**
* 设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景)
*/
mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.Transport);
//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。
mLocationOption.setInterval(1000);
//单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
mLocationOption.setHttpTimeOut(20000);
//关闭缓存机制
mLocationOption.setLocationCacheEnable(false);
if(null != mLocationClient){
mLocationClient.setLocationOption(mLocationOption);
mLocationClient.setLocationListener(this); // 设置定位回调函数
//设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
mLocationClient.stopLocation();
mLocationClient.startLocation();
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
}
//3. 初始化地图配置
setUpMap();
// =================( 结束)====================== //
return super.onCreateView(inflater, container, savedInstanceState);
}
/**
* amap添加一些事件监听器
*/
private void setUpMap() {
aMap.setOnMapClickListener(this); // 对amap添加单击地图事件监听器
aMap.setOnCameraChangeListener(this); // 对amap添加移动地图事件监听器
aMap.setOnMapLoadedListener(this); // 对amap添加地图加载完成事件
}
@Override
public void onCameraChange(CameraPosition cameraPosition) {
if (marker != null)
{
marker.setPosition(cameraPosition.target);
mapCenterLocation = cameraPosition.target;
}
}
/**
* 获得实时定位的结果
* @param aMapLocation
*/
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
LatLng latLng = new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude());
if (!isFirstLocation)
{
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14));
isFirstLocation = true;
}
}
/**
* 当前地图拖动或视图发生变化时,自动刷新更新页面
* @param cameraPosition
*/
@Override
public void onCameraChangeFinish(CameraPosition cameraPosition) {
if (marker != null)
{
marker.setPosition(cameraPosition.target);
}
}
@Override
public void onMapClick(LatLng latLng) {
}
@Override
public void onMapLoaded() {
CameraPosition cameraPosition = aMap.getCameraPosition();
//设置地图的缩放级别
CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12);
aMap.moveCamera(cameraUpdate);
//添加地图中心点标记点
if (marker == null)
{
markerOption = new MarkerOptions();
// 将Marker设置为贴地显示,可以双指下拉地图查看效果
markerOption.setFlat(true);//设置marker平贴地图效果
markerOption.position(cameraPosition.target);
marker = aMap.addMarker(markerOption);
}
//显示定位蓝点
if (myLocationStyle == null) {
myLocationStyle = new MyLocationStyle();
//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
// 连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。z
myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW);//连续定位、蓝点不会移动到地图中心点,地图依照设备方向旋转,并且蓝点会跟随设备移动。
myLocationStyle.showMyLocation(true);
aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
aMap.getUiSettings().setMyLocationButtonEnabled(true); //设置默认定位按钮是否显示,非必需设置。
aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
}
}
@Override
public void onDestroy() {
mapView.onDestroy();
mLocationClient.onDestroy();
mLocationOption = null;
mLocationClient = null;
aMap = null;
super.onDestroy();
}
@Override
public void onPause() {
mapView.onPause();
mLocationClient.stopLocation();
super.onPause();
}
@Override
public void onResume() {
mapView.onResume();
mLocationClient.startLocation();
super.onResume();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
}
高德地图android拖动地图,建议高德地图添加地图拖动事件,添加方法如内容所述...相关推荐
- android 内嵌地图,Android Fragment里嵌入高德地图【原创】
最近在做的项目里要用到地图,看了一下高德地图的API,最后决定就用高德地图,和平时不同,这次地图是要嵌在Fragment了,研究了一下网上的代码,最后实现了.下面说一下实现2D地图的方法. 1.先去高 ...
- android 添加系统日历事件,添加系统日历事件
前两天,产品提一个需求,说是弄一个系统日历的提醒,到时提醒用户做一些事情,大概这么一个需求.搞了一两天,查看API翻阅文档,算是完成需求了. 这篇文章一个纯粹的代码文章,就是告诉怎么用系统日历添加提醒 ...
- GeoServer地图开发解决方案(三):部署地图数据篇
GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现的社区开源项目,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操作,通过 GeoS ...
- android开发笔记之高德地图使用
前言 最近在给别的部门做项目,发现了他们在应用中使用了高德地图来定位,好吧,一个人实在是无聊,那让我们看看别人是怎么使用高德地图来定位吧,让我们揭开那层薄薄面纱,一睹女神的芳容吧. 参考资料 1.An ...
- android 高德地图移动卡顿_高德、百度和腾讯三家比拼,哪个 Android 车机地图 App 更好用?...
写在前面 不管是自己开车.还是平时打车,相信你一定留意过驾驶座旁边位于车辆中间的那块大屏幕,不管是平时开车导航.放音乐,还是通过倒车影像辅助倒车,都离不开这块屏幕,这就是中控车机. 中控车机往往搭载的 ...
- Android Map 开发之高德地图
android Map 开发之google Map 可参考文档 链接 本文总结的是Android Map 开发之高德地图,以下是详细代码及注释: 如何把 API 添加到我的Android 工程中 ...
- Android开发:集成高德地图实现定位、检索周边地址
需求 1.后台传给我们一个经纬度,然后需要我们在地图上显示出来 2.当我们点击地图的时候进入到第二个界面,实现当前位置的定位,并且检索周边的商家地址,点击后将选中的地址回传,并显示,而我们上传给后台的 ...
- Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗
最近开发中,遇到一个多个点绘制,并实现点击事件,出现自定义窗口显示相关信息等功能,所以写了这篇博客. 从后台请求数据,得到多个经纬度,然后绘制在地图上,并实现点击,出现相关信息(自定义弹框实现) 先来 ...
- Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航
主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...
最新文章
- ICAP: 互换客户端地址协议
- SEO交换链接时需遵循哪些原则?
- DFTug - Getting Started(下篇)
- Memcache参数
- springboot学习笔记(一)
- multipathd: sdn: readsector0 checker reports path is down 多路径出错问题解决
- 开源大数据周刊-第103期
- 广义逆高斯分布(Generalized Inverse Gaussian Distribution)及修正贝塞尔函数
- offset,client,scroll的学习记录
- 如何优雅地过滤敏感词
- EDA365 V2.5下载
- 高斯光束复振幅分布MATLAB
- html编写学生注册表,IT之家网友分享:如何自己编写一个注册表文档
- 基于java的房屋出租管理系统
- 国内商务邮箱品牌——TOM企业邮箱
- python画机器猫
- think php 导出excel,Thinkphp5导出excel
- 笔记本每次启动都会先黑屏1分钟再启动问题解决
- DDD与TDD比较之——TDD
- python函数关键字参数传递_Python给函数传递不定关键字的参数
热门文章
- 苹果新贵 Swift 之前世今生
- 小知识·typec耳机原理
- MATLAB使用radon函数和iradon函数计算图像的投影并从投影中重构图像
- idea程序参数program arguments,vm arguments,Environment variable
- 岳阳长沙深圳市区中考和高考难度对比
- 其实,搭建一个有品质的棋牌游戏平台没那么复杂
- UE4 Spline的使用
- 直播已入下半场,秀场直播该何去何从?
- 安装目录里无法找到计算机,安装软件弹出系统找不到指定的路径提示解决方法...
- 鼠标点击特效(富强,民主,文明,和谐,诚信,友善)