React Native 地图:如果有 POI,则无法点击标记

问题描述 投票:0回答:1

我正在使用 React Native Maps 库来构建 React Native (Android/iOS) 应用程序。我发现如果标记下方有 POI(如城市或地名),我无法单击该标记。

MapView.onPOIClick
监听器被触发,但
Marker.onPress
没有被触发。我已经在 Android 模拟器和真实 Android 手机中尝试过该应用程序。

有人遇到过这个问题并能够解决吗?我已经尝试过使用 RN 地图属性,但仍然没有运气。

提前非常感谢您!

react-native maps
1个回答
0
投票

我知道我在这里很晚了,但据我所知,您的问题是在 POI 上准确放置标记。如果我是正确的,下面的代码可以帮助你(我遇到了同样的问题并且刚刚解决了)。我正在工作:

  • 反应本机:0.72.6
  • 世博会:2015年0月49日
  • 反应本机地图:1.7.1

这是我的代码:

    const [markerData, setMarkerData] = useState({});
    
    /* ...Rest of the code... */
    
    return (
        <MapView
            className="flex-1 rounded-md"
            initialRegion={initialRegion}
            onPress={(data) => setMarkerData(data?.nativeEvent.coordinate)}
            onMarkerDragEnd={(data) => setMarkerData(data?.nativeEvent.coordinate)}
            onPoiClick={(data) => setMarkerData(data?.nativeEvent.coordinate)}
        >
            {Object.keys(markerData).length > 0 && <Marker draggable coordinate{markerData} />}
        </MapView>
    );

基本上,我通过触发这些事件来获取用户按下的位置的坐标。 onPoiClick 事件获取 POI 的坐标,您可以将该数据传递给状态变量(在我的例子中为 markerData)并使用该数据来渲染标记。

onPress={(data) => setMarkerData(data?.nativeEvent.coordinate)}
onMarkerDragEnd={(data) => setMarkerData(data?.nativeEvent.coordinate)}
// Using onPoiClick gets the coords of a POI
onPoiClick={(data) => setMarkerData(data?.nativeEvent.coordinate)}

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.