【Android】高德地图 缩放级别及像素以及地图上的点转化成屏幕上的点
【Android】高德地图 缩放级别及像素以及地图上的点转化成屏幕上的点
少年追梦 发表于2年前
【Android】高德地图 缩放级别及像素以及地图上的点转化成屏幕上的点
  • 发表于 2年前
  • 阅读 6214
  • 收藏 4
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

/** * 调节地图到正好放置查询范围的所有点 * @param centerLatLng 中心点 * @param range 查询范围(米) */ 
	private void adjustCamera(LatLng centerLatLng,int range) { 
		//http://www.eoeandroid.com/blog-1107295-47621.html
		//当前缩放级别下的比例尺 
		//"每像素代表" + scale + "米"
		float scale = g_aMap.getScalePerPixel(); 
		//代表range(米)的像素数量 
		int pixel = Math.round(range / scale); 
		//小范围,小缩放级别(比例尺较大),有精度损失 
		Projection projection = g_aMap.getProjection(); 
		//将地图的中心点,转换为屏幕上的点 
		Point center = projection.toScreenLocation(centerLatLng); 
		//获取距离中心点为pixel像素的左、右两点(屏幕上的点 
		Point right = new Point(center.x + pixel, center.y); 
		Point left = new Point(center.x - pixel, center.y); 
		
		//将屏幕上的点转换为地图上的点 
		LatLng rightLatlng = projection.fromScreenLocation(right); 
		LatLng LeftLatlng = projection.fromScreenLocation(left); 
		
		LatLngBounds bounds = LatLngBounds.builder().include(rightLatlng).include(LeftLatlng).build();
		//bounds.contains();
		
		g_aMap.getMapScreenMarkers();
		
		//调整可视范围 
		//aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(LatLngBounds.builder().include(rightLatlng).include(LeftLatlng).build(), 10)); }
	}

代码片段,点击区域,显示该区域上的点

LatLng latLng = marker.getPosition();
		//缩放级别
		float zoom = g_aMap.getCameraPosition().zoom;
		//"每像素代表" + scale + "米"
		float scale = g_aMap.getScalePerPixel(); 
		float range = scale * zoom;
		Circle circle = g_aMap.addCircle(new CircleOptions().center(latLng)
				.radius(range).strokeColor(getResources().getColor(R.color.color_translate))
				.fillColor(getResources().getColor(R.color.color_translate)).strokeWidth(2));


共有 人打赏支持
粉丝 3
博文 50
码字总数 6912
×
少年追梦
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: