我正在使用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仅显示坐标:
我希望这种类型同时显示图像或图标的位置
任何人都可以帮助我解决这个问题。
答案 0 :(得分:6)
最后我解决了我的问题:
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;