我下面的实现方法肯定是错误的,不知道如何将高德地图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拖动地图,建议高德地图添加地图拖动事件,添加方法如内容所述...相关推荐

  1. android 内嵌地图,Android Fragment里嵌入高德地图【原创】

    最近在做的项目里要用到地图,看了一下高德地图的API,最后决定就用高德地图,和平时不同,这次地图是要嵌在Fragment了,研究了一下网上的代码,最后实现了.下面说一下实现2D地图的方法. 1.先去高 ...

  2. android 添加系统日历事件,添加系统日历事件

    前两天,产品提一个需求,说是弄一个系统日历的提醒,到时提醒用户做一些事情,大概这么一个需求.搞了一两天,查看API翻阅文档,算是完成需求了. 这篇文章一个纯粹的代码文章,就是告诉怎么用系统日历添加提醒 ...

  3. GeoServer地图开发解决方案(三):部署地图数据篇

    GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现的社区开源项目,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操作,通过 GeoS ...

  4. android开发笔记之高德地图使用

    前言 最近在给别的部门做项目,发现了他们在应用中使用了高德地图来定位,好吧,一个人实在是无聊,那让我们看看别人是怎么使用高德地图来定位吧,让我们揭开那层薄薄面纱,一睹女神的芳容吧. 参考资料 1.An ...

  5. android 高德地图移动卡顿_高德、百度和腾讯三家比拼,哪个 Android 车机地图 App 更好用?...

    写在前面 不管是自己开车.还是平时打车,相信你一定留意过驾驶座旁边位于车辆中间的那块大屏幕,不管是平时开车导航.放音乐,还是通过倒车影像辅助倒车,都离不开这块屏幕,这就是中控车机. 中控车机往往搭载的 ...

  6. Android Map 开发之高德地图

    android Map 开发之google Map 可参考文档    链接 本文总结的是Android Map 开发之高德地图,以下是详细代码及注释: 如何把 API 添加到我的Android 工程中 ...

  7. Android开发:集成高德地图实现定位、检索周边地址

    需求 1.后台传给我们一个经纬度,然后需要我们在地图上显示出来 2.当我们点击地图的时候进入到第二个界面,实现当前位置的定位,并且检索周边的商家地址,点击后将选中的地址回传,并显示,而我们上传给后台的 ...

  8. Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗

    最近开发中,遇到一个多个点绘制,并实现点击事件,出现自定义窗口显示相关信息等功能,所以写了这篇博客. 从后台请求数据,得到多个经纬度,然后绘制在地图上,并实现点击,出现相关信息(自定义弹框实现) 先来 ...

  9. Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航

    主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...

最新文章

  1. ICAP: 互换客户端地址协议
  2. SEO交换链接时需遵循哪些原则?
  3. DFTug - Getting Started(下篇)
  4. Memcache参数
  5. springboot学习笔记(一)
  6. multipathd: sdn: readsector0 checker reports path is down 多路径出错问题解决
  7. 开源大数据周刊-第103期
  8. 广义逆高斯分布(Generalized Inverse Gaussian Distribution)及修正贝塞尔函数
  9. offset,client,scroll的学习记录
  10. 如何优雅地过滤敏感词
  11. EDA365 V2.5下载
  12. 高斯光束复振幅分布MATLAB
  13. html编写学生注册表,IT之家网友分享:如何自己编写一个注册表文档
  14. 基于java的房屋出租管理系统
  15. 国内商务邮箱品牌——TOM企业邮箱
  16. python画机器猫
  17. think php 导出excel,Thinkphp5导出excel
  18. 笔记本每次启动都会先黑屏1分钟再启动问题解决
  19. DDD与TDD比较之——TDD
  20. python函数关键字参数传递_Python给函数传递不定关键字的参数

热门文章

  1. 苹果新贵 Swift 之前世今生
  2. 小知识·typec耳机原理
  3. MATLAB使用radon函数和iradon函数计算图像的投影并从投影中重构图像
  4. idea程序参数program arguments,vm arguments,Environment variable
  5. 岳阳长沙深圳市区中考和高考难度对比
  6. 其实,搭建一个有品质的棋牌游戏平台没那么复杂
  7. UE4 Spline的使用
  8. 直播已入下半场,秀场直播该何去何从?
  9. 安装目录里无法找到计算机,安装软件弹出系统找不到指定的路径提示解决方法...
  10. 鼠标点击特效(富强,民主,文明,和谐,诚信,友善)