विभिन्न लाइनों निम्नलिखित कोड का उपयोग कर मार्ग नक्शे का प्रतिनिधित्व करने के लिए जोड़ रहे पर क्लिक घटनाओं के लिए सुनो:एक 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);
मैं निर्धारित करने के लिए जब इन पंक्तियों में से एक क्लिक किया जाता है सक्षम होने के लिए करना चाहते हैं। वर्तमान में, मैपबॉक्स OnMapClick
पर कॉल करता है और LatLng
ऑब्जेक्ट में गुजरता है। मैं उसके बाद निम्न का उपयोग कर custom-line
संपत्ति के साथ प्रदान की गई सुविधाओं के लिए क्वेरी कर सकते हैं: तो शामिल
PointF pixel = mapboxMap.getProjection().toScreenLocation(point);
List<Feature> selectedKeys = mapboxMap.queryRenderedFeatures(pixel, Filter.has("custom-line"));
तो selectedKeys
किसी भी Feature
वस्तुओं लौट आए, मैं .getGeometry()
साथ उनके निर्देशांक के लिए क्वेरी कर सकते हैं। LatLng
ऑब्जेक्ट से उन मानों की तुलना करना, जो कि पारित किया गया था, अनुमान लगाया गया था कि किस लाइन का क्लिक किया गया था। हालांकि, जब लाइन आइटम बारीकी से समूहित होते हैं तो यह बहुत गलत और परेशानी होती है।
इन पंक्ति वस्तुओं पर क्लिक ईवेंट के लिए कैसे सुनेंगे?
क्या आप एक [एमसीवीई] (https://stackoverflow.com/help/mcve) कर सकते हैं? – kalabalik