R语言sf/tmap地图地名优化:解决重叠与按需显示问题
解决tmap地图地名重叠的优化方案
方案1:仅在指定缩放级别以上显示地名
通过设置缩放阈值,让城镇名称仅在地图放大到一定程度时才显示,避免全视图下的重叠问题。
修改后的代码:
sf_points_ptr = st_as_sf(fig2_map_df, coords = c(x = "Easting", y = "Northing"), crs = 7405) tmap_mode('view') tm_shape(sf_points_ptr) + tm_dots(col = "blue") + tm_text("JBO", size = 0.8, # 仅当缩放级别大于10时显示名称,可根据实际情况调整数值 viewport.max = 10)
注:
viewport.max的数值对应地图缩放级别,数值越小意味着需要放大更多才会触发名称显示,可根据你的点位分布灵活调整。
方案2:点击点位时弹窗显示城镇名称
利用tmap交互视图的弹窗功能,全图仅显示蓝色点位,点击点位才弹出对应城镇名称,彻底避免重叠。
代码示例:
sf_points_ptr = st_as_sf(fig2_map_df, coords = c(x = "Easting", y = "Northing"), crs = 7405) tmap_mode('view') tm_shape(sf_points_ptr) + tm_dots(col = "blue") + # 点击点位时弹出城镇名称 tm_popup("JBO", title = "城镇名称")
方案3:两种方式结合(兼顾缩放显示与点击弹窗)
如果需要同时支持缩放显示名称和点击弹窗查看,可同时配置两个功能:
sf_points_ptr = st_as_sf(fig2_map_df, coords = c(x = "Easting", y = "Northing"), crs = 7405) tmap_mode('view') tm_shape(sf_points_ptr) + tm_dots(col = "blue") + tm_text("JBO", size = 0.8, viewport.max = 10) + tm_popup("JBO", title = "城镇名称")
内容的提问来源于stack exchange,提问作者Andy M
相关产品推荐
相关产品推荐

