هل هناك طريقة للحصول على موقع المستخدمين دون مطالبة المستخدم بتثبيت Google Gears؟

StackOverflow https://stackoverflow.com/questions/313805

سؤال

لا أريد أن أطلب من المستخدم تثبيت Google Gears حتى أتمكن من إظهار موقعه المتوقع.هل هناك طريقة للحصول على الموقع دون الحاجة إلى استخدام Google Gears؟

لقد وجدت http://www.wipmania.com/de/blog/google-geolocation-api/ لكنه لا يقدم مثالا.

هل كانت مفيدة؟

المحلول

وعادة وهذا ما يسمى IP تحديد الموقع الجغرافي.

ومثال على ذلك هو هنا .

والشيء هو أن معظم المواقع (إذا كنت تخطط لدعوة هذا كخدمة الإنترنت) سوف تهمة لكم لذلك. خلاف ذلك، ورمي معا خدمة الإنترنت التي الاستيلاء على الصفحة تحديد الموقع الجغرافي، يوزع عليه للعنوان، ويعود ذلك قطعة من المعلومات.

في PHP، وهذا يبدو للعمل بشكل جيد جدا:

<?php
 if(isset($_GET["ip"])){
   echo geolocate($_GET["ip"]);
 }

 function geolocate($ip){
   $raw_html = file_get_contents("http://www.geody.com/geoip.php?ip=$ip");
   if(preg_match('/Location:(.*)/',$raw_html,$matches)){
     $location_raw = $matches[1];

     //Get rid of pesky HTML tags
     $location = preg_replace("/<[^>]*>/","",$location_raw);
     return $location;
   }else{
     return "ERROR";
   }
 }

نصائح أخرى

توفر Google طريقة للحصول على موقع المستخدم من خلاله محمل AJAX API.سيعمل هذا حتى بدون تثبيت Gears.ما عليك سوى تضمين علامة برنامج نصي تشير إلى JsAPI:

<script type="text/javascript" 
   src="http://www.google.com/jsapi?key=ABCDEFG">
</script>

عندما يستخدم أحد التطبيقات أداة تحميل AJAX API، يحاول أداة التحميل تحديد الموقع الجغرافي للعميل بناءً على عنوان IP الخاص به.إذا نجحت هذه العملية، فسيتم توفير موقع العميل، الذي تم تحديده على مستوى المنطقة المركزية، في خاصية google.loader.ClientLocation.إذا فشلت العملية في العثور على تطابق، فسيتم تعيين هذه الخاصية على قيمة خالية.

if (google.loader.ClientLocation){
  var center = new google.maps.LatLng(
    google.loader.ClientLocation.latitude,
    google.loader.ClientLocation.longitude
  );
  map.setCenter(center);
}

عند تعبئته، تتم تعبئة كائن google.loader.ClientLocation بخصائص الدقة التالية على مستوى النطاق الحضري:

  • ClientLocation.latitude - يوفر خط العرض منخفض الدقة المرتبط بعنوان IP الخاص بالعميل
  • ClientLocation.longitude - يوفر خط الطول ذو الدقة المنخفضة المرتبط بعنوان IP الخاص بالعميل
  • ClientLocation.address.city - يوفر اسم المدينة المرتبطة بعنوان IP الخاص بالعميل
  • ClientLocation.address.country - يوفر اسم البلد المرتبط بعنوان IP الخاص بالعميل
  • ClientLocation.address.country_code - يوفر اسم رمز البلد ISO 3166-1 المرتبط بعنوان IP الخاص بالعميل
  • ClientLocation.address.region - يوفر اسم المنطقة الخاصة بالبلد والمقترن بعنوان IP الخاص بالعميل

وشيء واحد لمشاهدة لمع خدمة تحديد الموقع الجغرافي أو مكتبة هو أنها لن تكون دقيقة بنسبة 100٪. نحن نستخدم واحد، IP2Location ، وأنه كان في الواقع مصدر ثابت من الشكاوى إلى إدارة خدمة العملاء. نحن نبحث عن طرق لتغيير سلوك الموقع وزنها عوامل إزالته تماما.

والمشكلة تكمن في حقيقة أن عبء اقتران IP مع المستخدم مع المستخدمين ISP. لديهم كتل كبيرة من نطاقات IP، ويسجلون الذي يمنع تنتمي إلى موقع معين. والمشكلة هي أن مقدمي خدمات الإنترنت في كثير من الأحيان لا يتم تحديث هذه المعلومات عندما تحول كتل أو كتلة يغطي كبير جدا من المنطقة.

وعلى سبيل المثال، ويعيش حوالي ستين ميلا شمال مانهاتن، ولكن غالبا ما يظهر لي IP أنني في شيكاغو مع معظم أدوات البحث. لدي FIOS، وتحدثت إلى اثنين من الأشخاص الآخرين الذين أكدوا نفس السلوك.

ويمكنك استخدام HTML5 لهذا الغرض. وهذا هو بسيط جدا. هنا عبارة سبيل المثال.

وإذا كان المستخدمون هم على الهاتف المحمول، Xitfy هو أيضا خيار حر. لديهم عميل صغير بعد يوافق المستخدم يمكن تركيبها بسهولة على هواتفهم. ثم يمكنك استدعاء واجهة برمجة تطبيقات REST استنادا للحصول على وجه الدقة خطوط الطول / العرض مصدرها لتحديد المواقع / واي فاي أو برج الخلية.

وانهم يدعمون أندرويد، ويندوز موبايل، وبلاك بيري وسيمبيان والتي تغطي تقريبا جميع الهواتف الذكية.

ويمكنك الترميز الجغرافي عنوان IP باستخدام هذا الرمز البسيط. يعمل كبيرة. جرب هذا:

function functionname(Your IP Here)
{

    $ip = $ClientIP;

    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");

    $json = json_decode($json,true);

    return $json;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top