اذهب إلى المحتوى

السؤال

نشر (معدل)

انا استطيع فتح الخريطة على الهاتف ولكنى اريد عن الضغط على اى مكان فى الخريطة فانه يطبع لى احداثياته ولو كان به مكان مميز مثلا مطعم او غيره فاريد ان اعرف كيف احصل على اسمه 

 

 <SafeView>
       <Button title="close" onPress={onClose} />
       <MapView style={{flex: 1}}></MapView>
 </SafeView>

 

تم التعديل في بواسطة أحمد ابراهيم عبد الله

Recommended Posts

  • 1
نشر

لمعرفة الاحداثيات عند مكان ضغط المستخدم يمكنك الاستفادة من التابع onPress كما يلي

<MapView style={{flex: 1}}
         onPress={({ coordinate, position}) => {
  	const {latitude, longitude} = coordinate
  	// الان اصبح لديك الاحداثيات التي تم الضغط عليها
  }}>
</MapView>

لمعرفة وجود مكان مميز عند تلك الاحداثيات، يجب الاستعلام عن ذلك من مزود معلومات الاماكن المميزة حسب تطبيقك :

  • اما من بيانات الاماكن المميزة التي يوفرها تطبيقك (في قاعدة البيانات لديك مثلا)
  • أو الاستفادة بالاشتراك بمزود معلومات خرائط طرف ثالث مثل Google Maps
  • 0
نشر
  بتاريخ On 16‏/8‏/2021 at 14:48 قال Hassan Hedr:

لمعرفة الاحداثيات عند مكان ضغط المستخدم يمكنك الاستفادة من التابع onPress كما يلي

<MapView style={{flex: 1}}
         onPress={({ coordinate, position}) => {
  	const {latitude, longitude} = coordinate
  	// الان اصبح لديك الاحداثيات التي تم الضغط عليها
  }}>
</MapView>

لمعرفة وجود مكان مميز عند تلك الاحداثيات، يجب الاستعلام عن ذلك من مزود معلومات الاماكن المميزة حسب تطبيقك :

  • اما من بيانات الاماكن المميزة التي يوفرها تطبيقك (في قاعدة البيانات لديك مثلا)
  • أو الاستفادة بالاشتراك بمزود معلومات خرائط طرف ثالث مثل Google Maps
أظهر المزيد  

ظهر لى هدا الايرور 

 TypeError: undefined is not an object (evaluating 'coordinate.latitude')

 

  • 0
نشر (معدل)

جرب تمرير احداثيات منطقة العرض initialRegion كالتالي (يمكنك تغيير الاحداثيات لاي مكان تريد عرضه)

<MapView style={{flex: 1}}
         initialRegion={{
           latitude: 37.78825,
           longitude: -122.4324,
           latitudeDelta: 0.0922,
           longitudeDelta: 0.0421,
         }}
         onPress={({ coordinate, position}) => {
            const {latitude, longitude} = coordinate
            // الان اصبح لديك الاحداثيات التي تم الضغط عليها
         }}>
</MapView>

 

تم التعديل في بواسطة Hassan Hedr
  • 0
نشر
  بتاريخ On 16‏/8‏/2021 at 17:04 قال Hassan Hedr:

جرب تمرير احداثيات منطقة العرض initialRegion كالتالي (يمكنك تغيير الاحداثيات لاي مكان تريد عرضه)

<MapView style={{flex: 1}}
         initialRegion={{
           latitude: 37.78825,
           longitude: -122.4324,
           latitudeDelta: 0.0922,
           longitudeDelta: 0.0421,
         }}
         onPress={({ coordinate, position}) => {
            const {latitude, longitude} = coordinate
            // الان اصبح لديك الاحداثيات التي تم الضغط عليها
         }}>
</MapView>

 

أظهر المزيد  

للأسف يعرض لى نفس الخطأ

  • 0
نشر
  بتاريخ On 17‏/8‏/2021 at 12:44 قال Hassan Hedr:

احتاج الى تفاصيل اكثر لتحديد المشكلة

  • على اي نظام تقوم بالاختبار Android أم IOS ؟
  • جرب تمرير الخاصية "provider="google
  • هل الخريطة تظهر وهل يمكنك ارفاق صورة للخريطة وللخطأ ؟
أظهر المزيد  

تمت الحل كودك كان يحتاج الى تعديل بسيط

  • 0
نشر
  بتاريخ On 17‏/8‏/2021 at 14:53 قال Hassan Hedr:

هل يمكنك نشر الكود بعد التعديل، لكي يتطلع عليه من يمر بنفس المشكلة لاحقًا

أظهر المزيد  

هدا هو الحل

onMapViewOress={(coordinate: any) => {

console.log(coordinate.nativeEvent.coordinate);

setSelectedLocation(coordinate.nativeEvent.coordinate);

}}

 

 

  • 0
نشر

يبدو انه عند الضغط أول مرة تكون الاحداثيات غير معروفة لذلك يجب التاكد من وجود القيمة coordinate قبل محاولة الوصول الى الاحداثيات منها كما يلي

onPress={({ coordinate }) => {
  if(!coordinate) return // التاكد من وجود قيمة الاحداثيات
  
  const {latitude, longitude} = coordinate
}}>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...