精华内容
下载资源
问答
  • 高德地图Marker和Marker点击事件处理 界面上添加marker的相关操作 因为我做的景区里面有很多的景点,在显示景点类型的情况下就需要显示很多的景点marker,所以就在地图上面添加了景点的marker。下面是添加景点...

    高德地图Marker和Marker点击事件处理

    界面上添加marker的相关操作

    因为我做的景区里面有很多的景点,在显示景点类型的情况下就需要显示很多的景点marker,所以就在地图上面添加了景点的marker。下面是添加景点marker的代码。如果想要添加多个marker,循环遍历下面方法即可。

     /**
         * 往地图上添加marker
         */
        public void addMarkersToMap(Context context, LatLng latlng, String title, int icon, int i,boolean isSpot) {
            if (mAmap != null) {
                View view = View.inflate(context, R.layout.marker_show, null);
                TextView textView = (TextView) view.findViewById(R.id.tv_marker_show);
                ImageView imageView = (ImageView) view.findViewById(R.id.iv_marker_show);
                imageView.setImageResource(icon);
                if ("".equals(title) || title == null) {
                    textView.setVisibility(View.GONE);
                } else {
                    textView.setVisibility(View.VISIBLE);
                }
                textView.setText(title);
                Bitmap bitmap = BitmapUtils.convertViewToBitmap(view);
                int radius = DensityUtil.dip2px(context, isSpot ? 225 : 170); 
                markerOption = new MarkerOptions()
                        .position(latlng)
                        .draggable(true)
                        .title(i + "")
                        .setInfoWindowOffset(0, radius) //  需要慢慢调试情况
                        .icon(BitmapDescriptorFactory.fromBitmap(bitmap));
                Marker marker = mAmap.addMarker(markerOption);
                // 将marker保存 方便后面清除
                mAllMarker.add(marker);
                // 释放资源
                bitmap.recycle();
            }
        }
    

    因为我的marker比较复杂,不是单纯的一个图片就可以轻松的搞定,所以我这边自定义了view,然后将这个自定义的view打包成bitmap交给Amap。其实也可以不打包成bitmap,高德有api可以直接用view,但是它将view拿过去之后还是转成了图片的格式。

    从开始new一个view的到转成bitmap都是属于给当前需要显示的view界面进行赋值,让marker在界面上显示的不一样。

    radius:是我这边要显示的infowindow的y轴方向的偏移量,我这边由于UI切图问题和UI测试需要显示的问题导致我这边需要进行向下的偏移。

    position:设置当前marker显示在界面的什么位置,即经纬度的传入。

    draggable:当前marker是否可以拖动,true 可以拖动。

    title:设置marker的主题。如果不设置title也不设置snippet的情况,点击这个marker是不会出现infowindow 我这边设置的position的编号,主要是我要根据marker里面保存的信息来找出当前显示的是哪一个景点的marker,那么在点击marker的时候就可以根据对应的marker显示对应的内容。

    setInfoWindowOffset(int x,int y); x是横向的偏移量(正数表示向右偏移,负数表示向左偏移),y是竖向的偏移量(正数表示向下偏移,负数表示向上偏移)。

    icon:将上面的view的bitmap传给地图

    mAmap.addMarker(markerOption);
    

    将上面对marker的配置添加到地图上,这是地图上面就显示了这个marker。

    下面是我这边自定义的marker的样式。
    在这里插入图片描述

    添加marker的点击事件

            // marker 点击事件监听
            mAmap.setOnMarkerClickListener(mMarkerListener);
    

    备注:一定要设置marker的title或者snippet,否则就算有点击事件,也不会调用getInfoWindow的方法。

    点击事件的监听

    在点击事件中不管界面有没有显示当前marker的infowindow,再次进行点击都会是显示infowindow。由于infowindow界面默认只显示一个,如果你点击其他的marker就会显示其他的,当前这个就会关闭掉。

    /**
         * 设置marker的点击事件
         */
        AMap.OnMarkerClickListener mMarkerListener = new AMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                if (marker.isInfoWindowShown()) {
                    marker.hideInfoWindow();
                } else {
                    marker.showInfoWindow();
                }
                return true; // 返回:true 表示点击marker 后marker 不会移动到地图中心;返回false 表示点击marker 后marker 会自动移动到地图中心
            }
        };
    

    infowindow的显示

    mAmap.setInfoWindowAdapter(mAMapSpotAdapter); // 设置marker点击之后显示的infowindow界面
    

    mAMapSpotAdapter 源代码如下:

    AMap.InfoWindowAdapter mAMapSpotAdapter = new AMap.InfoWindowAdapter() {
            @Override
            public View getInfoWindow(Marker marker) {
                if ("".equals(marker.getTitle()) || marker.getTitle() == null) {
                    return null;
                }
                View infoContent = getLayoutInflater().inflate(R.layout.marker_click_spot_type, null);
                render(marker, infoContent);
                return infoContent;
            }
    
            @Override
            public View getInfoContents(Marker marker) {
                if ("".equals(marker.getTitle()) || marker.getTitle() == null) {
                    return null;
                }
                View infoContent = getLayoutInflater().inflate(R.layout.marker_click_spot_type, null);
                render(marker, infoContent);
                return infoContent;
            }
    
            private void render(Marker marker, View view) {
                // 界面的绘制加数据 当前是景点显示的infowindow 60 是正常情况 225  仅仅对景区景点的设置底部问题 带有箭头的正常情况下65
                RelativeLayout rl_all_info = view.findViewById(R.id.rl_all_info);
                RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(rl_all_info.getLayoutParams());
                int view_x = DpUtil.dp2px(mContext,200); // infowindow的宽度
                int bottom = DpUtil.dp2px(mContext,170); // 正常情况下底部偏移量问题
                int padding_view = DpUtil.dp2px(mContext,32)*2; // 正常情况下底部偏移量问题
                // 判断当前是上下左右哪一个地方的显示
                int type = showInfoWindowSpotLTRB(marker); // 1 marker 在屏幕的左边 2 marker 在屏幕的上面 3 marker 在屏幕的右边 4 marker 在屏幕的底部 5 左上  6 左下 7 右上  8  右下
                if (type == 1) { // top // 需要显示在顶部中间位置
                    lp.setMargins(0,0, 0,  0);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_top_center);
                } else if (type == 2 ){ // topleft // 顶部左边 需要显示在顶部最左边位置
                    lp.setMargins(view_x-padding_view,0, 0,  0);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_top_left);
                } else if (type == 3 ){ // topright // 顶部右边 需要显示在顶部最右边位置
                    lp.setMargins(0,0, view_x-padding_view,  0);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_top_right);
                } else if (type == 4 ){ // right // 右边 需要显示在右边中间位置
                    lp.setMargins(0,0, view_x,  bottom/2);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_right_center);
                } else if (type == 5 ){ // left // 左边 需要显示在左边中间位置
                    lp.setMargins(view_x,0, 0,  bottom/2);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_left_center);
                } else if (type == 6 ){ // leftBotttom // 底部左边 需要显示在底部最左边位置
                    lp.setMargins(view_x-padding_view,0, 0,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_left);
                } else if (type == 7 ){ // rightBottom // 底部右边 需要显示在底部最右边位置
                    lp.setMargins(0,0, view_x-padding_view,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_right);
                } else if (type == 8 ){ // Bottom // 底部 需要显示在底部中间位置
                    lp.setMargins(0,0, 0,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_center);
                } else { // 正常情况下 显示在底部中间位置
                    lp.setMargins(0,0, 0,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_center);
                }
                // 设置属性
                rl_all_info.setLayoutParams(lp);
    
                // 音频播放点击事件
                RelativeLayout rlImg = view.findViewById(R.id.rl_img);
                // 景点图片显示 圆形图片显示
                RoundImageView ivScenicSpotImg = view.findViewById(R.id.iv_scenic_spot_img);
                // 播放的图片
                ImageView ivPlayImg = view.findViewById(R.id.iv_play_img);
                // 景点名称
                TextView tvTitle = view.findViewById(R.id.tv_title);
                // 景点距离
                TextView tvPosition = view.findViewById(R.id.tv_position);
                // 解说
                ImageView ivListen = view.findViewById(R.id.iv_intro);
                // 详请
                ImageView ivDetail = view.findViewById(R.id.iv_detail);
                int period = Integer.parseInt(marker.getTitle());
                ScenicSpotGuideBean.ScenicSpotListBean bean = mInfo.getScenicSpotList().get(period);
                tvTitle.setText(bean.getName());
    
                // 获取当前marker的经纬度
                LatLng markerLatLng = marker.getPosition();
                // 获取当前我的经纬度
                LatLng myLatLng = new LatLng(Constants.mLatitude,Constants.mLongitude);
                // 计算当前两个经纬度的距离问题
                float distance = AMapUtils.calculateLineDistance(markerLatLng, myLatLng);
                tvPosition.setText("距离" + AMapUtil.getFriendlyLength((int) distance));
                
                GlideUtil.loadImgRadius(ivScenicSpotImg, 0, bean.getPhotoUrl());
                // 点击事件
                // 播放点击事件
                rlImg.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        // 更新当前界面
                    }
                });
                // 播放点击事件
                ivPlayImg.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        // 更新当前界面
                    }
                });
                // 解说
                ivListen.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        // 更新当前界面
                    }
                });
                // 详请
                ivDetail.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        marker.hideInfoWindow(); // 如果想要隐藏当前的infowindow就调用这个api
                    }
                });
            }
        };
    

    因为我这边的这个比较复杂,你们比较简单的可以不管render()里面的内容,我这边赋值是在render里面去做的赋值处理。

    下面是点击之前和点击之后的界面变化。
    在这里插入图片描述
    在这里插入图片描述
    因为滑动收到了限制。所以就会出现在边界的marker如果正常显示就会有一部分看不到,所以我这边根据当前marker在屏幕上的位置来判断当前marker所处位置是否可以显示正个infowindow的布局,如果会被隐藏一部分就做偏移处理,如marker在界面的右边就,往左偏移一定的值,就可以正常的看到全部的布局。

    			RelativeLayout rl_all_info = view.findViewById(R.id.rl_all_info);
                RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(rl_all_info.getLayoutParams());
                int view_x = DpUtil.dp2px(mContext,200); // infowindow的宽度
                int bottom = DpUtil.dp2px(mContext,170); // 正常情况下底部偏移量问题
                int padding_view = DpUtil.dp2px(mContext,32)*2; // 正常情况下底部偏移量问题
                // 判断当前是上下左右哪一个地方的显示
                int type = showInfoWindowSpotLTRB(marker); // 1 marker 在屏幕的左边 2 marker 在屏幕的上面 3 marker 在屏幕的右边 4 marker 在屏幕的底部 5 左上  6 左下 7 右上  8  右下
                if (type == 1) { // top // 需要显示在顶部中间位置
                    lp.setMargins(0,0, 0,  0);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_top_center);
                } else if (type == 2 ){ // topleft // 顶部左边 需要显示在顶部最左边位置
                    lp.setMargins(view_x-padding_view,0, 0,  0);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_top_left);
                } else if (type == 3 ){ // topright // 顶部右边 需要显示在顶部最右边位置
                    lp.setMargins(0,0, view_x-padding_view,  0);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_top_right);
                } else if (type == 4 ){ // right // 右边 需要显示在右边中间位置
                    lp.setMargins(0,0, view_x,  bottom/2);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_right_center);
                } else if (type == 5 ){ // left // 左边 需要显示在左边中间位置
                    lp.setMargins(view_x,0, 0,  bottom/2);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_left_center);
                } else if (type == 6 ){ // leftBotttom // 底部左边 需要显示在底部最左边位置
                    lp.setMargins(view_x-padding_view,0, 0,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_left);
                } else if (type == 7 ){ // rightBottom // 底部右边 需要显示在底部最右边位置
                    lp.setMargins(0,0, view_x-padding_view,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_right);
                } else if (type == 8 ){ // Bottom // 底部 需要显示在底部中间位置
                    lp.setMargins(0,0, 0,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_center);
                } else { // 正常情况下 显示在底部中间位置
                    lp.setMargins(0,0, 0,  bottom);
                    rl_all_info.setBackgroundResource(R.drawable.marker_spot_bottom_center);
                }
                // 设置属性
                rl_all_info.setLayoutParams(lp);
    

    这一部分的代码是做布局的偏移显示,我分成八种情况分别是:顶部,顶部左边,顶部右边,左边,右边,底部,底部左边,底部右边。如果你也需要做这样的操作,你可以根据你的布局进行详细的偏移。如果要显示在marker的底部,需要在最开始的时候设置marker的setInfoWindowOffset的y方向的偏移量默认显示在底部,不然后面改margin是不能浮动到marker的底部的。

    			// 获取当前marker的经纬度
                LatLng markerLatLng = marker.getPosition();
                // 获取当前我的经纬度
                LatLng myLatLng = new LatLng(Constants.mLatitude,Constants.mLongitude);
                // 计算当前两个经纬度的距离问题
                float distance = AMapUtils.calculateLineDistance(markerLatLng, myLatLng);
                tvPosition.setText("距离" + AMapUtil.getFriendlyLength((int) distance));
    

    这个是根据我当前的位置和marker的位置计算出我与当前景点的距离。

    /**
         *  获取infowindow应该显示为位置
         * @return type 0 表示不做更改 1 顶部 2 顶部左边 3 顶部右边 4 右边 5 左边 6 底部左边 7 顶部右边 8 底部
         */
        private int showInfoWindowSpotLTRB(Marker marker){
            Point markerPoint = mAmap.getProjection().toScreenLocation(marker.getPosition()); // 返回一个从地图位置转换来的屏幕位置
            int type = 0;
            int screen_X = getResources().getDisplayMetrics().widthPixels;
            int screen_Y = getResources().getDisplayMetrics().heightPixels;
            int marker_x = markerPoint.x;
            int marker_y = markerPoint.y;
            int view_x = DpUtil.dp2px(mContext,152)/2; // infowindow的宽度
            int view_y = DpUtil.dp2px(mContext,108)/2; // infowindow的高度
            int top_y = DpUtil.dp2px(mContext,103);
            int Bottom_y = DpUtil.dp2px(mContext,135);
            if (((screen_X-marker_x) < view_x)){ // 横向判断当前marker位置是否是在右边 表示在右边
                // 当前已经在右边了 判断有没有在顶部
                if ((screen_Y - marker_y) < (view_y + Bottom_y)){ // 当前在底部 右边底部
                    type = 7;
                } else if ((marker_y-top_y) < view_y){ // 当前在顶部 右边顶部
                    type = 3;
                } else { // 右边
                    type = 4;
                }
            } else if (marker_x < view_x){ // 当前在左边
                if ((screen_Y - marker_y) < (view_y + Bottom_y)){ // 当前在底部 左边底部
                    type = 6;
                } else if ((marker_y-top_y) < view_y){ // 当前在顶部 左边顶部
                    type = 2;
                } else { // 左边
                    type = 5;
                }
            } else if ((marker_y-top_y) < view_y){ // 当前在顶部 顶部
                type = 1;
            } else if ((screen_Y - marker_y) < (view_y + Bottom_y)){ // 当前在底部 底部
                type = 8;
            } else { //不做操作
                type = 0;
            }
            return type;
        }
    

    上面这个方法是计算当前marker在屏幕的什么位置。

    mAmap.getProjection().toScreenLocation(marker.getPosition());
    

    这个根据marker获取屏幕位置时高德地图官方提供的。

    展开全文
  • 首先创建聚合,然后给聚合的每个marker添加点击事件效果图 从接口获取数据 创建聚合 //创建聚合 addMarker(positionData) { let map = this.getMap //获取地图 if (positionData.length) { this.markerList...

    首先创建聚合,然后给聚合的每个marker添加点击事件(聚合的点击事件和marker的点击事件添加方法一样)

    从接口获取数据

    在这里插入图片描述

    创建聚合

    //创建聚合
    addMarker(positionData) {
       let map = this.getMap			//获取地图
       if (positionData.length) {
         this.markerList = []		//清空marker
       }
       for (let i = 0; i < positionData.length; i++) {
         if (positionData[i].lnglat[0] && positionData[i].lnglat[1]) {
           this.createMarker(positionData[i])		//添加marker
         }
       }
       let count = this.markerList.length
       this.$store.commit('setMarkerList', this.markerList)
       //设置聚合样式
       let renderClusterMarker = function (context) {
         let factor = Math.pow(context.count / count, 1 / 18)
         let div = document.createElement('div')
         let Hue = 180 - factor * 180
         let bgColor = 'hsla(' + Hue + ',100%,40%,0.7)'
         let fontColor = 'hsla(' + Hue + ',100%,90%,1)'
         let borderColor = 'hsla(' + Hue + ',100%,40%,1)'
         let shadowColor = 'hsla(' + Hue + ',100%,90%,1)'
         div.style.backgroundColor = bgColor
         let size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20)
         div.style.width = div.style.height = size + 'px'
         div.style.border = 'solid 1px ' + borderColor
         div.style.borderRadius = size / 2 + 'px'
         div.style.boxShadow = '0 0 5px ' + shadowColor
         div.innerHTML = context.count
         div.style.lineHeight = size + 'px'
         div.style.color = fontColor
         div.style.fontSize = '14px'
         div.style.textAlign = 'center'
         context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2))
         context.marker.setContent(div)
       }
       //设置marker位置偏移
       let renderMarker = function (context) {
         let content = ''
         let offset = new AMap.Pixel(-9, -9)
         context.marker.setContent(content)
         context.marker.setOffset(offset)
       }
       if (this.cluster == null) {			//显示所有marker
         this.cluster = new AMap.MarkerClusterer(map, this.markerList, {
           gridSize: 80,
           renderClusterMarker: renderClusterMarker,
           renderMarker: renderMarker, 		// 自定义非聚合点样式
         })
         //地图大小跟随marker分布自适应
         map.setFitView(this.markerList)
       } else {								//显示传入的marker
         this.cluster.addMarkers(this.markerList)
       }
     },
    

    然后给聚合的每个marker添加点击事件

    //创建marker
    createMarker(data) {
      if (data != null) {
      	//设置marker图标样式
        let icon = new AMap.Icon({
          size: new AMap.Size(50, 50), // 图标尺寸
          image: this.typeUrl[data.terminalType - 1].url, // Icon的图像
          imageSize: new AMap.Size(24, 24), // 根据所设置的大小拉伸或压缩图片
        })
        //设置marker位置
        let markerOption = {
          icon: icon,
          position: [parseFloat(data.lnglat[0]), parseFloat(data.lnglat[1])],
          offset: new AMap.Pixel(-13, -30),
        }
        let marker = new AMap.Marker(markerOption)
        //给marker添加属性
        marker.setExtData(data)
        //给marker添加点击事件
        marker.on('click', this.markerClick)
        this.markerMap[data.terminalId] = marker
        this.dataMap[data.terminalId] = data
        this.markerList.push(marker)
      }
    },
     //marker点击事件
     markerClick(e) {
       //e.target.getExtData() 获取点击的marker属性 然后显示当前marker详情
       this.showInfo(e.target.getExtData())
     },
    

    效果图

    初始样式

    在这里插入图片描述

    放大之后显示marker

    在这里插入图片描述

    点击marker,显示详情

    在这里插入图片描述

    展开全文
  • 问题描述:如果一个marker添加了单击事件函数和双击事件函数,在双击marker时,会执行两次单击函数和一次双击函数。 解决方式:在单击事件函数里通过定时器控制延迟执行。单击事件函数和双击事件函数里都先清...

            问题描述:如果一个marker添加了单击事件函数和双击事件函数,在双击marker时,会执行两次单击函数和一次双击函数。

            解决方式:在单击事件函数里通过定时器控制延迟执行。单击事件函数和双击事件函数里都先清定时器。

            扩展:一般的dom的单击、双击 也可以这么处理。

        var timer;
        L.marker([51.5, -0.09]).addTo(map).on('click',function(e){
            clearTimeout(timer)   // 先清定时器
            timer = setTimeout(()=>{  // 再延迟执行
                console.log(e)
            },250);
        }).on('dblclick', function(e) {
            clearTimeout(timer); // 先清定时器
            console.log(e)  // 不必延迟执行
        });

     

    展开全文
  • 添加图片Marker图标 BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.qidian)); final Marker marker = aMap.addMarker(new M...

    添加图片Marker图标

        BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.qidian));
        final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).icon(bitmapDescriptor));
    
    
    

    1、添加Marker点击事件——根据markerID区分各个Marker的点击事件

    mapView = (MapView) findViewById(R.id.map);
    //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理
    mapView.onCreate(savedInstanceState);
    if (aMap == null) {
        Log.i("lgq","sssssfa====aMap == null");
        aMap = mapView.getMap();
        //设置显示定位按钮 并且可以点击
        UiSettings settings = aMap.getUiSettings();
        aMap.setLocationSource(this);//设置了定位的监听
        // 是否显示定位按钮
        settings.setMyLocationButtonEnabled(true);
        aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase
     
     
        aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                Log.i("lgq","dianjiddd===="+marker.getPeriod());//获取markerID
                bottomli.setVisibility(View.VISIBLE);
                bottomte.setText("地址是:"+marker.getPeriod());
                return false;
            }
        });
    

    2、给地图添加自定义Marker

    添加多个Marker

    setMarker("大象网吧",23.025845,113.752532,1);
    setMarker("小猴网吧",23.025845,113.772532,2);
    setMarker("大英超网吧",23.024845,113.782532,3);
    setMarker("京山市场网吧",23.086634,113.849915,4);
    setMarker("东城亿嘉网咖",23.036034,113.816161,5);
    
    public void setMarker(String barname,double wd,double jd,int mid){
        LayoutInflater mInflater = LayoutInflater.from(this);
        View view = mInflater.inflate(R.layout.zdyview, null);
        TextView textView = view.findViewById(R.id.tete);
        textView.setText(barname);
     
        Bitmap bitmap =convertViewToBitmap(view);
     
        //绘制marker
        Marker marker2 = aMap.addMarker(new MarkerOptions()
                .position(new LatLng(wd,jd)).period(mid)//添加markerID
                .icon(BitmapDescriptorFactory.fromBitmap(bitmap))
                .draggable(false));
    }
    

    view转bitmap方法
    //view 转bitmap

     

    public static Bitmap convertViewToBitmap(View view) {
    
        view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    
        view.buildDrawingCache();
    
        Bitmap bitmap = view.getDrawingCache();
    
        return bitmap;
    
    }
    

     zdyview文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
     
        <TextView
            android:id="@+id/tete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="13dp"
            android:textColor="@color/colorPrimary"
            android:background="@mipmap/custom_info_bubble"
            android:paddingRight="3dp"
            android:paddingLeft="3dp"
            android:textStyle="bold"
            android:text="速度"
           />
     
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/dw64"/>
     
    </LinearLayout>
    

    原文地址:https://blog.csdn.net/meixi_android/article/details/84971804

    展开全文
  • //添加marker来设置点击事件 //二、通过L.geoJSON来添加marker或者line resultLayer=L.geoJSON(); resultLayer.addLayer(L.marker(latLng, {icon: icon,attributes:feature}).addTo(map).bindTooltip(feature....
  • 代码: aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { //....................... return false;//false表示
  • <script type="text/javascript"> //地图初始化时,在地图上添加一个marker标记,鼠标点击marker可弹出自定义的信息窗体 var map = new AMap.Map("container", { resizeEnable: true, center: [116.481181, 39....
  • * Marker点击事件 * @param marker * @return */ @Override public boolean onMarkerClick(Marker marker) { String titleName = marker.getTitle(); LatLng position = marker.getPosition(); Toast....
  • 此前,笔者在进行百度地图开发的时候,发现百度提供的marker点击事件中,并不能确定我点击marker的是哪一个marker,这就很尴尬了. 解决方法 : marker是可以携带参数过去的,所以我们可以依靠参数来判断点击的是哪个...
  • 为多个Marker添加事件 给三个标注绑定点击事件,当点击标注时,会弹出标注的序号信息。
  • 使用高德地图时,通过搜索便可将地址搜索出来,但是想点击当前marker获取当前的经纬度和具体地址时,如下图: AMap.event.addListener(autocomplete, "select", function(e){ //TODO 针对选中的poi实现自己的功能 ...
  • android百度地图的多Marker点击事件,判断点击的是哪一个marker,可以用bundle Bundle mBundle = new Bundle(); //用来传值 也可以识别点击的是哪一个marker mBundle.putString("province", regionInfo1....
  • 高德地图上添加marker,给每个marker添加点击事件。 高德地图上添加marker,给每个marker添加点击事件。 var watch = [] $.ajax({ type: 'GET', dataType: 'jsonp', url: url + '你的url地址', error: ...
  • 高德地图关于搜索后marker点击事件

    千次阅读 2019-09-30 19:11:38
    简介:功能说明:输入内容后高德地图会出现一些地点提示,提示后涉及两方面,一是你选择提示的地点进行搜索定位。二是点击软键盘上的搜索进行定位...无论哪一种方式,地图上都会出现多个marker,但是用户会去选择想...
  • 前段时间研究了路书想用来监控公交但发现路书很多功能不足,比如说路书移动时点击事件不能触发,路书动态改变移动速度需要移动完两点之间的距离才能改变,添加多个路书会移动其他的移动速度等。后来自己用marker写了...
  • 话不多说,直接上代码: var points = []; //坐标点数组 ... var marker = []; //marker数组 $.each(data, function(index,value){ var myIcon = new BMap.Icon("https://api.map.baidu.com/im...
  • 关于百度地图marker点击事件

    万次阅读 2017-05-27 11:45:40
    在最开始学习使用百度地图,marker点击事件,很容易实现点击弹出框; 像这样: baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker...
  • 接入百度地图定位加Marker点击事件

    千次阅读 2018-01-23 15:47:01
    *整个地图的点击事件,就是用来点击地图让infowindow消失,增强用户体验 /** * @author zhongqihong * 给整个地图添加的点击事件 */ @Override public void onMapClick(LatLng arg0) { //表示...
  • .BMap_cpyCtrl { display: none; } .BMap_noprint { display: none; } 不能点击主要是因为我的css里面多了这几行代码,然后我在网上找了好久没找到解决方法,心态都崩了
  • //用来传值 也可以识别点击的是哪一个marker mBundle.putString("title", "第" + i + "个marker"); mBundle.putDouble("lat", latLngList.get(i).latitude); mBundle.putDouble("lng", latLngList.get(i).longitude...
  • 百度地图调用加载显示Marker,并添加点击事件 注册百度开发者账号,申请应用AK 百度地图开发平台官网 点击右上角控制台,选择创建应用 创建应用,勾选浏览器端,白名单填写* 注:如上线更改为公网IP,如...
  • 设置Marker单击链接 效果展示: 点击Marker跳转到指定的链接地址。 源码赠送: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>刘一哥与GIS的故事<.
  • 范例使用SuperMap iClient 6R for JavaScript开发模式,演示了MarkerLayer和2个VectorLayer叠加,Marker图层响应鼠标mouseover、mouseout、click等事件,VectorLayer响应鼠标click事件,可以在事件处理程序中加入...
  • 点击调用的函数里面的内容就可以了 B ( ) . then ( res => // forEach遍历每条数据 res1:存放的是每一条数据 res . data . forEach ( item => { // gps:存放坐标数据的字段名,要先判断点不...
  • 可能对所有地图有效,话不多说 直接上代码 ... marker.addEventListener("click", function () { a = 0; //进行判断是不是双击 if (lastSelectedTowerId && lastSelectTowerTime) { var
  • 高德地图上添加marker,给每一个marker添加点击事件。高德地图上添加marker,给每一个marker添加点击事件。javascriptvar watch = []$.ajax({type: 'GET',dataType: 'jsonp',url:url +'你的url地址',error: function...
  • 在项目中需要利用Marker对地图位置进行自定义标记,想使用自己的图标,并在点击Marker时需要弹出框显示对象信息,并且做后续自定义的操作。 高德地图上自定义单位Marker有介绍,但自定义多个使用的方法不是一样,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,455
精华内容 3,382
关键字:

marker点击事件