高德地图自定义标记点marker缩放偏移问题

在使用高德地图点标记功能,自定义图标或内容时,如果对地图进行缩放,可以发现会此时图标会存在偏移,定位不准现象,如下图

造成这种现象的原因其实是对标记点的偏移量offset属性理解不准确导致,通过查阅官方文档可知,offset默认值是[0,0],意思就是定位中心点是在图标的左上角,带着此种思维再去看刚才的效果就可以发现,其实是没有偏移的,只是图标定位点在底部,缩放时造成的视觉上错觉,如下图

我们可以看到,如果把视觉焦点聚焦在左上角[0,0]的位置,其实定位一直是准确的。造成这种误导还有个原因就是当我们使用高德默认图标时,没有设置偏移量,就认为也是默认的[0,0],但定位没有视觉偏差,估计是高德内部做了偏移量处理。

为了符合图标底部是实际定位点的效果,可以看到图标大小是38*63,基于左上角原点,x轴偏移半个宽度,y轴偏移整个高度即可,即offset: [-19, -63],修改后查看效果,已满足需求。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要实现标记的功能,首先需要引入高德地图的相关依赖,然后在Spring Boot的配置文件中配置高德地图的API Key。 1. 引入高德地图的依赖: 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.amap.api</groupId> <artifactId>amap-java-sdk-all</artifactId> <version>1.4.0</version> </dependency> ``` 2. 在Spring Boot的配置文件中配置高德地图的API Key: 在application.properties或application.yml文件中添加以下配置: ```yaml # application.yml amap: apiKey: your_api_key ``` 3. 创建一个标记的实体类: 可以创建一个Marker类表示标记,包含经度、纬度、标注标题等属性。 ```java public class Marker { private double longitude; private double latitude; private String title; // 省略getter和setter方法 // ... } ``` 4. 在控制器中实现标记功能: 可以在控制器中创建一个接口,用于接收前端传来的标记的数据,并调用高德地图的API进行标记。 ```java @RestController public class MapController { @Autowired private AMapService aMapService; @PostMapping("/markers") public void addMarkers(@RequestBody List<Marker> markers) { aMapService.addMarkers(markers); } } ``` 5. 创建一个服务类实现高德地图的功能: 在服务类中使用高德地图的API,通过传入的标记数据来进行标记。 ```java @Service public class AMapService { @Value("${amap.apiKey}") private String apiKey; public void addMarkers(List<Marker> markers) { // 使用高德地图API进行标记 // ... } } ``` 以上就是使用Spring Boot整合高德地图实现标记的简要步骤。根据具体需求,还可以拓展其他相关的功能,如设置标记的样式、添加击事件等。 ### 回答2: 要在Spring Boot中整合高德地图实现标记,可以按照以下步骤进行操作。 1. 首先,创建一个基于Spring Boot的Web项目。 2. 在项目的依赖管理文件(通常是pom.xml)中添加高德地图的相关依赖。例如,可以添加以下依赖项: ``` <dependency> <groupId>com.github.whuesei</groupId> <artifactId>amap-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> ``` 3. 在项目的配置文件(通常是application.properties或application.yml)中,配置高德地图的相关信息。例如,可以设置以下属性: ``` amap.app-key=YourAmapAppKey ``` 这里的`YourAmapAppKey`是你在高德地图开发者平台申请的App Key。 4. 创建一个Controller类,用于处理地图相关的请求。在该Controller中,使用@Autowired注解将AmapClient注入进来,用于调用高德地图API。 5. 在Controller中的相应方法中,调用AmapClient的相关方法来实现标记功能。例如,可以使用`addMarker`方法来添加标记。具体的调用方式可以参考高德地图API文档。 6. 在前端页面中,使用JavaScript代码来调用后端接口,获取标记的相关数据,并在地图上进行展示。 通过上述步骤,就可以在Spring Boot项目中整合高德地图,实现标记的功能了。当然,这只是一个简单的示例,具体的实现可能还需要根据项目的需求来进行相应的调整和扩展。 ### 回答3: Spring Boot是一种用于简化Java应用程序开发的框架,而高德地图是一种提供地理位置数据的服务。利用Spring Boot可以方便地实现与高德地图的集成,以实现标记的功能。 首先,需要在项目的pom.xml文件中添加对高德地图API的依赖。可以使用一些常见的Java HTTP客户端库,如Apache HttpClient或OkHttp,来处理与高德地图的HTTP请求与响应。 接下来,在Spring Boot的配置文件中添加与高德地图相关的配置信息。例如,可以配置高德地图开发者Key,以便进行身份验证和访问权限控制。 然后,在Spring Boot的控制器类中编写代码来处理与高德地图的交互。可以使用高德地图提供的API来获取地理位置数据,包括标记的经纬度、名称、描述等。 在前端页面上,可以使用HTML和JavaScript显示地图,并在地图上添加标记。可以使用高德地图JavaScript API来实现此功能。通过调用API提供的方法,可以在地图上创建标记、设置标记的位置和信息,并将其添加到地图上。 最后,将前端页面与后端控制器进行连接,以实现数据的交互和显示。Spring Boot可以通过Thymeleaf等模板引擎来实现页面的动态展示,并将地理位置数据传递给前端。 总之,通过使用Spring Boot和高德地图的API,可以方便地实现标记的功能。这种整合可以帮助开发人员在Java应用程序中轻松地添加地图功能,并实现与地图的交互。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值