dòng khác nhau được thêm vào các tuyến đường bản đồ thể hiện bằng cách sử dụng đoạn mã sau:Nghe cho các sự kiện nhấp chuột vào một LineLayer
private LineLayer makeLineLayer(List<GeoPoint> routePoints, String title) {
String sourceTitle = "line-layer-" + lineCount;
List<Position> points = new ArrayList<>(routePoints.size());
List<Feature> routes = new ArrayList<>(routePoints.size());
for (GeoPoint point : routePoints) {
points.add(Position.fromCoordinates(point.getLongitude(), point.getLatitude()));
}
LineString route = LineString.fromCoordinates(points);
Feature routeFeature = Feature.fromGeometry(route);
routeFeature.addStringProperty("custom-line", "0");
routes.add(routeFeature);
GeoJsonSource linesSource = new GeoJsonSource(
sourceTitle,
FeatureCollection.fromFeatures(routes));
mapboxMap.addSource(linesSource);
LineLayer lineLayer = new LineLayer(title, sourceTitle);
lineLayer.setProperties(
//Sets properties...
);
return lineLayer;
}
LineLayer lineLayer = makeLineLayer(getRoutePoints());
mapboxMap.addLayer(lineLayer);
Tôi muốn để có thể xác định khi nào một trong những dòng này được nhấp. Hiện tại, MapBox gọi OnMapClick
và chuyển vào đối tượng LatLng
. sau đó tôi có thể truy vấn cho các tính năng render với custom-line
tài sản sử dụng như sau:
PointF pixel = mapboxMap.getProjection().toScreenLocation(point);
List<Feature> selectedKeys = mapboxMap.queryRenderedFeatures(pixel, Filter.has("custom-line"));
Nếu selectedKeys
sau đó có chứa bất kỳ trở Feature
đối tượng, tôi có thể truy vấn cho tọa độ của họ với .getGeometry()
. So sánh các giá trị đó với các giá trị từ đối tượng LatLng
đã được chuyển vào, ước tính sơ bộ về dòng nào được nhấp có thể được xác định. Tuy nhiên, điều này rất không chính xác và phiền hà khi các chi tiết đơn hàng được nhóm chặt chẽ.
Làm cách nào một người sẽ nghe các sự kiện nhấp chuột trên các chi tiết đơn hàng này?
Bạn có thể tạo [MCVE] (https://stackoverflow.com/help/mcve) không? – kalabalik