JavaFX 中如何从按钮单击在地图上动态显示标记?
2024-03-15 19:24:15
## JavaFX 中从按钮单击在地图上显示标记的终极指南
### 问题:在地图上显示标记的难题
我们着手创建一个 JavaFX 应用程序,通过点击按钮在地图上显示一个标记。我们以为这很容易,但事实证明,在 JavaFX 的 WebView 中实现这一点并不简单。在浏览器中打开 HTML 页面时,一切正常,但在 WebView 中却什么也不发生!
### 解决方法:JavaScript 和 JavaFX 协同工作
1. HTML 文件中的标记数据
在我们的 HTML 文件中,我们使用 AJAX 请求从 JSON 文件加载标记数据。这确保了当用户打开页面时,地图上会显示所有必要的标记。
2. 初始化地图并显示标记
在 JavaScript 中,我们在 initMap() 函数中初始化地图并根据 JSON 数据显示标记。我们使用 google.maps.Marker 对象创建每个标记,并将其添加到地图中。
3. 从 JavaFX 按钮调用 JavaScript
为了从 JavaFX 按钮事件处理程序向地图传递数据,我们使用 WebView 的 executeScript() 方法。这个方法允许我们在 JavaScript 中直接执行 JavaFX 代码。
4. 在 JavaScript 中更新标记
在 JavaScript 中,我们创建了一个 updateMarker() 函数,它从 JavaFX 接收数据并更新标记的位置。该函数接收纬度和经度作为参数,并使用它们来更新标记的位置。
### 结论:问题解决
通过结合 JavaFX 和 JavaScript 的功能,我们成功解决了在地图上显示标记的问题。我们的解决方案涉及从 JavaFX 按钮事件处理程序向地图传递数据,并在 JavaScript 中更新标记的位置。这种方法可以确保标记在 JavaFX WebView 中正确显示。
### 常见问题解答
1. 如何处理多个标记?
我们的解决方案允许显示多个标记。AJAX 请求从 JSON 文件加载所有标记,然后在 JavaScript 中创建和显示每个标记。
2. 如何设置标记的颜色和图标?
标记的颜色和图标可以通过更改 google.maps.Marker 对象的选项来设置。有关详细信息,请参阅 Google Maps 文档。
3. 如何从地图中删除标记?
要从地图中删除标记,请调用 marker.setMap(null) 方法。这将从地图中删除标记。
4. 如何获得标记的当前位置?
要获得标记的当前位置,请调用 marker.getPosition() 方法。该方法返回一个包含标记纬度和经度的 google.maps.LatLng 对象。
5. 如何更新标记的位置?
要更新标记的位置,请调用 marker.setPosition(new google.maps.LatLng(lat, lng)) 方法。这将更新标记的纬度和经度。