2016-09-23 86 views
4

我已經嘗試通過調用MapView.Marker標籤中的onPress方法,但它不工作。標記點擊事件反應本地地圖不工作反應ios

這種方法用於跟蹤標記點擊:

markerClick(){ 
     console.log("Marker was clicked"); 
} 

在渲染方法,地圖部件的聲明顯示地圖和地圖上的標記 。在onPress方法中,我調用了我自定義的方法 markerClicked()。我仍然沒有得到結果。

render() { 
     return (

      <View style={styles.container}> 
      <MapView style={styles.map} 
       initialRegion={{ 
        latitude: 37.78825, 
        longitude: -122.4324, 
        latitudeDelta: 0.0, 
        longitudeDelta: 0.0, 
       }} 
      > 
      {this.state.markers.map(marker => (
       <MapView.Marker 
       coordinate={marker.coordinate} 
       title={marker.title} 
       description={marker.description} 
       onPress={() => this.markerClick()} 
       /> 
      ))} 
      </MapView> 
     </View> 
    ); 
    } 

回答

4

你只需要添加<MapView.Callout><MapView.Marker>標記。 自定義標註 - 您可以根據需要自定義標記信息點擊窗口。

我已經使用TouchableHighlightmarker info window click,這樣就可以能夠用戶重定向到其他屏幕上的custom callout點擊。

<View style={styles.mainContainer}> 
        <MapView style={styles.map} 
          initialRegion={{ 
           latitude: 37.78825, 
           longitude: -122.4324, 
           latitudeDelta: 0.0, 
           longitudeDelta: 0.0, 
          }}> 
          {this.state.markers.map((marker) => (
           <MapView.Marker 
           coordinate={marker.coordinate} 
           title={marker.title} 
           description={marker.description}> 
            <MapView.Callout tooltip style={styles.customView}> 
             <TouchableHighlight onPress= {()=>this.markerClick()} underlayColor='#dddddd'> 
              <View style={styles.calloutText}> 
               <Text>{marker.title}{"\n"}{marker.description}</Text> 
              </View> 
             </TouchableHighlight> 
            </MapView.Callout> 
           </MapView.Marker> 
          ))} 
        </MapView> 
        </View> 
+0

謝謝。當我在地圖標記視圖中添加了時,它正在工作。 – BK19

1

嘗試在你的標記添加一個 「關鍵」:

{this.state.markers.map((marker, i) => (
    <MapView.Marker 
     key={i} 
     coordinate={marker.coordinate} 
     title={marker.title} 
     description={marker.description} 
     onPress={() => this.markerClick()} 
    /> 
))} 

只要使用 'i' 的測試,你應該使用一個唯一的ID

+0

這不適合我。我已經使用了與上面提到的相同的代碼。 – BK19

+0

你有任何其他**解決方案**相關**標記點擊**在反應原生ios。 我在''組件中添加了'key = {i}'元素,但仍然沒有點擊標記正在工作。 – BK19

2

爲了增加Anil的回答,您可以使用「onCalloutPress」回調的標記來處理標註的新聞發佈會上,這樣你就不需要在標註一個TouchableHighlight:

<MapView.Marker 
    coordinate={marker.coordinate} 
    title={marker.title} 
    description={marker.description} 
    onCalloutPress={this.markerClick}> 
    <MapView.Callout tooltip style={styles.customView}> 
     <View style={styles.calloutText}> 
      <Text>{marker.title}{"\n"}{marker.description}</Text> 
     </View> 
    </MapView.Callout> 
</MapView.Marker> 
-1
<MapView.Marker key={index} coordinate={marker.coordinate} 
    title={marker.title} 
    description={marker.description} 
    onPress={e => this.onPressMarker(e,index)} 
> 
+0

代碼只接受,請添加說明 –