Marker click event on react native maps not working in react ios

后端 未结 5 861
感动是毒
感动是毒 2020-12-15 00:19

I have tried by calling onPress method in MapView.Marker Tab, but its not working.

This method for tracking marker click:

markerClic         


        
相关标签:
5条回答
  • 2020-12-15 00:27

    onCalloutPress={this.markerClick()} worked for me. Hope this helps.

    0 讨论(0)
  • 2020-12-15 00:30

    To add to Anil's answer, you can use the 'onCalloutPress' callback on Marker to handle the callout press event, so that you don't need a TouchableHighlight in the callout:

    <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>
    
    0 讨论(0)
  • 2020-12-15 00:43
    <MapView.Marker key={index} coordinate={marker.coordinate}
        title={marker.title}
        description={marker.description}
        onPress={e => this.onPressMarker(e,index)}
    >
    
    0 讨论(0)
  • 2020-12-15 00:45

    You just need to add <MapView.Callout> in <MapView.Marker> tag. Custom callout- you can customize marker info click window as your requirement.

    I have used TouchableHighlight for marker info window click, so that you can able to redirect user to other screen on click of 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='#ffffdffffd'>
                                              <View style={styles.calloutText}>
                                                  <Text>{marker.title}{"\n"}{marker.description}</Text>
                                              </View>
                                          </TouchableHighlight>
                                        </MapView.Callout>
                                    </MapView.Marker>
                                ))}
                         </MapView>
                      </View>
    
    0 讨论(0)
  • 2020-12-15 00:51

    Try to add a "key" in your marker:

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

    Just use 'i' for testing, you should use an unique id

    0 讨论(0)
提交回复
热议问题