高德地图清除指定覆盖物 自定义覆盖物样式(完整dome)

1 篇文章 0 订阅

该篇文章两个知识点:

1.每次点击把手动添加的覆盖物存到自定义的数组,清除时再调用map.remove(传参),并把数组置空;

2.想自定义覆盖物样式:只需在callBackFn函数里,再添加content参数,里面可以添加我们自定义的标签名和样式,这样就算你想在里面画花都行了;

效果图:

               


dome:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, 
minimal-ui"/>
		<title></title>
		<style>
			html,body{width:100%;height:100%;}
			#map{width:100%;height:100%;background: #ddd;}
			#clear{position: fixed;bottom:5%;right:5%;padding:8px;color:#fff;font-size: 12px;background: #0792dd;}
			.markerClass{background: url(local1.png);background-size: 100% 100%;width:52px;height:61px;}
		</style>
		<link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
		<script type="text/javascript" src='http://webapi.amap.com/maps?v=1.4.2&key=你在高德申请的key&plugin=AMap.ToolBar'></script>
	</head>
	<body>
		<div id="map"></div>
		<span id="clear">点击清除覆盖物</span>
		
	</body>
	<script>
		/*========设置中心点=======*/
		var _lng = "113.2641077042";
		var _lat = "23.1254620342";
      	var map = new AMap.Map('map', {
            zoom: 15,
            center: [_lng, _lat]
        });
        /*========设显示中心标注=======*/
        var xbjMarker = new AMap.Marker({
            position: [_lng, _lat]
        });
        xbjMarker.setMap(map);

        xbjMarker.setLabel({
            offset: new AMap.Pixel(-24, -26),
            content: "地址展示框"
        });
	    
	    var addMarkers = [];
	    
	    //添加覆盖物
	    var callBackFn = function(e) {
	        var marker = new AMap.Marker({
	            map: map,
	            position: [e.lnglat.getLng(), e.lnglat.getLat()],
	            content:'<div class="markerClass"></div>'//自定义覆盖物样式,可传可不传
	        });
	        addMarkers.push(marker);
	    };
	    //点击地图添加自定义覆盖物
	    map.on('click', callBackFn);
		
		//点击清除按钮
        document.getElementById("clear").addEventListener('click',function(){
        	map.remove(addMarkers);
        	addMarkers = [];
        });
	</script>
</html>


在Java中,要实现后台生成天地图(Tencent Maps)打点后的截图,你需要使用Tencent Map Kit for Java API,这是一个官方提供的库,用于在Android应用中集成腾讯地图功能。由于这涉及到客户端开发,所以我无法提供完整Dome代码,但我会给你一个概述和关键步骤。 **首先,确保已经添加了依赖:** 如果还没有,你需要在你的项目中引入腾讯地图的SDK。在Gradle文件中的`dependencies`块中添加以下内容: ```groovy implementation 'com.tencent.mmopen:mapkit-sdk:8.2.0' ``` 确保替换为最新的版本号。 **其次,创建MapView并设置地点:** 在后台服务或者异步线程中,创建一个`TencentMapView`实例,并设置打点位置: ```java TencentMapView mapView = (TencentMapView) findViewById(R.id.map_view); GeoPoint point = new GeoPoint(lat, lon); // lat和lon是经纬度坐标 mapView.setCenter(point); ``` **然后,获取地图图片:** 调用`getMapBitmap()`方法来获取地图的位图,这个过程可能需要一定时间,因为它是在内存中绘制的地图。 ```java Bitmap bitmap = mapView.getMapBitmap(); ``` **保存或发送地图图片:** 你可以选择直接保存到本地,或者通过网络发送到服务器: - **保存到本地:** ```java FileOutputStream fos = new FileOutputStream("path_to_save_map.jpg"); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.close(); ``` - **发送到服务器:** ```java try { URL url = new URL("your_server_url/image_upload"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, os); os.flush(); os.close(); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { Log.d("TAG", "Image uploaded successfully."); } else { Log.e("TAG", "Failed to upload image. Response code: " + responseCode); } } catch (IOException e) { e.printStackTrace(); } ``` **注意事项:** - 这些操作通常在主线程外进行,避免阻塞UI线程。 - `getMapBitmap()`可能会消耗较多资源,确保在合适的时候执行,比如在后台任务或者服务中。 - 如果有权限限制,请处理相应的权限请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caicaicai404

对作者使用钞能力,欢迎点这里

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值