React-Native: как я могу получить несколько изображений маркеров, когда я нажимаю на несколько позиций (например, координаты X и Y)

Я разрабатываю пример приложения в React native. Фактически, когда я нажимаю на определенную позицию На изображении получаю соответствующие координаты x и y. Но в этой позиции я хочу отображать маркер несколько раз и несколько позиций

Это мой код для отображения:

return (


      <View style={styles.container}>
      <TouchableOpacity onPress={(evt) => this.handlePress(evt)}>
      <Image source={require('./back1.jpg')} style={{resizeMode:'cover'}}>
         </Image>
         </TouchableOpacity>
      </View>
    );

Моя функция OnPress:

handlePress(evt){
  Alert.alert(`x coord = ${evt.nativeEvent.locationX}`);
  Alert.alert(`y coord = ${evt.nativeEvent.locationY}`);
}

Здесь это мой ScreenShot Отображение только координат:

введите описание изображения здесь

Я хочу, чтобы этот тип показывал позицию в то же время изображение или значок также

введите описание изображения здесь

Может ли кто-нибудь помочь мне решить это.

Ответы

Ответ 1

Наконец, я решил свою проблему:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  Alert,
  AlertIos,
  Image,
  Coordinates,
  TouchableOpacity,
  View
} from 'react-native';

import Badge from 'react-native-smart-badge'

var Dimensions = require('Dimensions');
var windowSize = Dimensions.get('window');
export default class index extends Component {
  constructor(props) {
    super(props)
    this.state={
      xcor:null,
      ycor:null,
      corx:'',
      array:[],
      count: 0

    }

  }




handlePress(evt){
  var array =this.state.array
  var count = 0
  console.log("Coordinates",`x coord = ${evt.nativeEvent.locationX}`);
  console.log("Coordinates",`y coord = ${evt.nativeEvent.locationY}`);
  var cordinates = {"xcor":evt.nativeEvent.locationX,
    "ycor":evt.nativeEvent.locationY,
    "name" :"Keven"}
  array.push(cordinates)
  this.setState({
    array:array
  })

 /* this.setState({
    xcor:evt.nativeEvent.locationX,
    ycor:evt.nativeEvent.locationY,
    corx:evt.nativeEvent.locationX
  })*/
}

  render() {
    var array =[];
    if(this.state.array.length != 0){
      this.state.array.map((res)=>{
        array.push(
          <View style={{position:"relative",flex:1,left:res.xcor,top:res.ycor,right:res.xcor,bottom:res.ycor}}>
           <Badge textStyle={{color: 'white',}} minWidth={18} minHeight={18} style={{marginTop: 8,marginLeft:-16}}>
                    {res.name}
                </Badge>
            <Image source={require('./logo.png')} style={{resizeMode:'cover',width:35,height:35}}>
            </Image>
          </View>
          )
      })
    }
    return (
      <View style={styles.container} >
      <View style={{position:'absolute'}} >
      <TouchableOpacity onPress={(evt) => this.handlePress(evt)}>
      <Image  source={require('./back2.jpg')} style={{resizeMode:'cover',width:windowSize.width,height:windowSize.height}}>
        </Image>
         </TouchableOpacity>

        </View>

        {this.state.array.length != 0 ?(
          <View >
                {array}
              </View>
          ):(<View></View>)
         }

      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,

  }
});

module.exports=index;