الموقع الجغرافي: عرض موقع المستخدم أو الجهاز على "خرائط Google"

نظرة عامة

يوضّح لك هذا الدليل التعليمي كيفية عرض الموقع الجغرافي لجهاز على خريطة Google باستخدام ميزة الموقع الجغرافي في HTML5 للمتصفّح مع Maps JavaScript API. لن يتم عرض الموقع الجغرافي إلا إذا سمح المستخدم بمشاركة الموقع الجغرافي.

عندما يُجري المستخدم طلب الموقع الجغرافي، سيتلقّى إشعارًا من المتصفّح للموافقة على الوصول إلى بيانات الموقع الجغرافي للجهاز. إذا تعذّر إكمال الطلب، قد يرجع ذلك إلى رفض أذونات تحديد الموقع الجغرافي أو تعذُّر تحديد الموقع الجغرافي للجهاز. لا تتوفّر هذه الميزة إلا في السياقات الآمنة (HTTPS)، في بعض المتصفّحات المتوافقة أو جميعها.

في ما يلي خريطة يمكنها تحديد الموقع الجغرافي الحالي لجهاز المستخدم.

يعرض النموذج أدناه الرمز البرمجي الكامل الذي تحتاجه لإنشاء هذه الخريطة.

TypeScript

// Note: This example requires that you consent to location sharing when
// prompted by your browser. If you see the error "The Geolocation service
// failed.", it means you probably did not give permission for the browser to
// locate you.
let map: google.maps.Map, infoWindow: google.maps.InfoWindow;

function initMap(): void {
  map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
    center: { lat: -34.397, lng: 150.644 },
    zoom: 6,
  });
  infoWindow = new google.maps.InfoWindow();

  const locationButton = document.createElement("button");

  locationButton.textContent = "Pan to Current Location";
  locationButton.classList.add("custom-map-control-button");

  map.controls[google.maps.ControlPosition.TOP_CENTER].push(locationButton);

  locationButton.addEventListener("click", () => {
    // Try HTML5 geolocation.
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(
        (position: GeolocationPosition) => {
          const pos = {
            lat: position.coords.latitude,
            lng: position.coords.longitude,
          };

          infoWindow.setPosition(pos);
          infoWindow.setContent("Location found.");
          infoWindow.open(map);
          map.setCenter(pos);
        },
        () => {
          handleLocationError(true, infoWindow, map.getCenter()!);
        }
      );
    } else {
      // Browser doesn't support Geolocation
      handleLocationError(false, infoWindow, map.getCenter()!);
    }
  });
}

function handleLocationError(
  browserHasGeolocation: boolean,
  infoWindow: google.maps.InfoWindow,
  pos: google.maps.LatLng
) {
  infoWindow.setPosition(pos);
  infoWindow.setContent(
    browserHasGeolocation
      ? "Error: The Geolocation service failed."
      : "Error: Your browser doesn't support geolocation."
  );
  infoWindow.open(map);
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// Note: This example requires that you consent to location sharing when
// prompted by your browser. If you see the error "The Geolocation service
// failed.", it means you probably did not give permission for the browser to
// locate you.
let map, infoWindow;

function initMap() {
  map = new google.maps.Map(document.getElementById("map"), {
    center: { lat: -34.397, lng: 150.644 },
    zoom: 6,
  });
  infoWindow = new google.maps.InfoWindow();

  const locationButton = document.createElement("button");

  locationButton.textContent = "Pan to Current Location";
  locationButton.classList.add("custom-map-control-button");
  map.controls[google.maps.ControlPosition.TOP_CENTER].push(locationButton);
  locationButton.addEventListener("click", () => {
    // Try HTML5 geolocation.
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(
        (position) => {
          const pos = {
            lat: position.coords.latitude,
            lng: position.coords.longitude,
          };

          infoWindow.setPosition(pos);
          infoWindow.setContent("Location found.");
          infoWindow.open(map);
          map.setCenter(pos);
        },
        () => {
          handleLocationError(true, infoWindow, map.getCenter());
        },
      );
    } else {
      // Browser doesn't support Geolocation
      handleLocationError(false, infoWindow, map.getCenter());
    }
  });
}

function handleLocationError(browserHasGeolocation, infoWindow, pos) {
  infoWindow.setPosition(pos);
  infoWindow.setContent(
    browserHasGeolocation
      ? "Error: The Geolocation service failed."
      : "Error: Your browser doesn't support geolocation.",
  );
  infoWindow.open(map);
}

window.initMap = initMap;
عرض مثال

تجربة عيّنة

ما هو رصد الموقع الجغرافي؟

يشير رصد الموقع الجغرافي إلى تحديد الموقع الجغرافي لجهاز كمبيوتر باستخدام مجموعة متنوعة من آليات جمع البيانات. وعادةً ما تستخدم معظم خدمات الموقع الجغرافي عناوين توجيه الشبكة أو شرائح GPS الداخلية لتحديد هذا الموقع الجغرافي. الموقع الجغرافي هو واجهة برمجة تطبيقات خاصة بالجهاز. ويعني ذلك أنّ المتصفّحات أو الأجهزة يجب أن تتيح استخدام تحديد الموقع الجغرافي من خلال تطبيقات الويب.

معيار الموقع الجغرافي من W3C

يجب أن تكون التطبيقات التي تريد تحديد الموقع الجغرافي متوافقة مع معيار تحديد الموقع الجغرافي من W3C. يُرجى العلم أنّ رمز النموذج أعلاه يحدِّد الموقع الجغرافي للجهاز من خلال واجهة برمجة التطبيقات W3C navigator.geolocation.

تستخدم المواقع الإلكترونية أحيانًا عناوين IP لرصد الموقع الجغرافي للجهاز، ولكن قد يقدّم ذلك فقط تقديرًا تقريبيًا لهذا الموقع الجغرافي. واجهات برمجة التطبيقات وفقًا لمعيار W3C هي الأكثر توافقًا ودقة، لذا يجب منحهم الأولوية على طرق تحديد الموقع الجغرافي الأخرى.