Nhận vị trí GPS từ trình duyệt web


164

Tôi đang phát triển một trang web dựa trên thiết bị di động, ở đó tôi đã tích hợp Google Maps, tôi cần phải tự động điền vào trường 'Từ' của Google Maps.

Có thể lấy vị trí GPS từ trình duyệt web và tự động điền vào trường 'Từ' của Bản đồ Google không?


2
Những điện thoại di động nào bạn có ý định hỗ trợ?
Rowland Shaw

tôi muốn hỗ trợ tất cả các trình duyệt di động, nhưng i-phone là ưu tiên cao
Ganesh

Bạn có thể tốt hơn nên viết một ứng dụng gốc, vì nó sẽ cho phép tích hợp chặt chẽ hơn với phần cứng, nơi nó có sẵn
Rowland Shaw

16
nếu nhu cầu chỉ liên quan đến vị trí, thì một ứng dụng gốc cực kỳ quá mức cần thiết. iOS không phải là thiết bị di động duy nhất, nó chỉ là ưu tiên hàng đầu.
Gonçalo Veiga

Câu trả lời:


194

Nếu bạn sử dụng API vị trí địa lý , nó sẽ đơn giản như sử dụng mã sau đây.

navigator.geolocation.getCurrentPosition(function(location) {
  console.log(location.coords.latitude);
  console.log(location.coords.longitude);
  console.log(location.coords.accuracy);
});

Bạn cũng có thể sử dụng API vị trí khách hàng của Google .

Vấn đề này đã được thảo luận trong Có thể phát hiện vị trí GPS của trình duyệt di động không? Nhận dữ liệu vị trí từ trình duyệt di động . Bạn có thể tìm thêm thông tin ở đó.


API vị trí khách hàng của Google có còn được đề cập không? Liên kết được cung cấp đi tới Google Loader
Shane N

1
Tôi không thấy nó trên trang đó là một trong những API có sẵn. - Bạn có thể sử dụng API Google Latitude: code.google.com/apis/latitude - Với điều này, có thể lấy vị trí hiện tại của khách hàng: code.google.com/apis/latitude/v1/
dochoffiday

1
Đối với độc giả tương lai, độ chính xác được đo bằng mét .
johnnyRose

Hyy chúng ta có thể kích hoạt vị trí chia sẻ một cách tự động thông qua mã hóa
Ông Tomar

2
Điều này có yêu cầu sử dụng vị trí của bạn?
Jack

21

Để đưa ra một câu trả lời cụ thể hơn một chút. HTML5 cho phép bạn có được tọa độ địa lý và nó thực hiện một công việc khá tốt. Nhìn chung, hỗ trợ trình duyệt cho định vị địa lý là khá tốt, tất cả các trình duyệt chính ngoại trừ eg7 và eg8 (và opera mini). IE9 thực hiện công việc nhưng là trình diễn tệ nhất. Thanh toán caniuse.com:

http://caniuse.com/#search=geol

Ngoài ra, bạn cần có sự chấp thuận của người dùng để truy cập vị trí của họ, vì vậy hãy đảm bảo bạn kiểm tra điều này và đưa ra một số hướng dẫn phù hợp trong trường hợp nó bị tắt. Đặc biệt đối với quyền bật Iphone trên Safari thì hơi cồng kềnh.


dotnetcurry.com/aspnet-mvc/782/... là một tài liệu tham khảo hữu ích cho thực hiện trong asp.net MVC môi trường
Walter de Jong

13

Sử dụng cái này và bạn sẽ tìm thấy tất cả các thông tin tại http://www.w3schools.com/html/html5_geolocation.asp

<script>
var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
}
</script>

1
Chỉ cần một lưu ý: getCienP vị trí () và watchP vị trí () không còn hoạt động trên nguồn gốc không an toàn. Để sử dụng tính năng này, bạn nên xem xét chuyển đổi ứng dụng của mình sang nguồn gốc an toàn, chẳng hạn như HTTPS.
dùng2589273

4

API GeoLocation , nhưng hiện tại hỗ trợ trình duyệt khá mỏng. Hầu hết các trang web quan tâm đến những điều như vậy đều sử dụng cơ sở dữ liệu GeoIP (với các điều khoản thông thường về tính không chính xác của hệ thống như vậy). Bạn cũng có thể xem các dịch vụ của bên thứ ba yêu cầu sự hợp tác của người dùng như FireEagle .


1
Cảm ơn rất nhiều cho phản ứng nhanh chóng của bạn. nếu có thể, bạn có thể cung cấp cho tôi một số lời khuyên nữa không ...
Ganesh

2

Có thể quan sát

/*
  function geo_success(position) {
    do_something(position.coords.latitude, position.coords.longitude);
  }

  function geo_error() {
    alert("Sorry, no position available.");
  }

  var geo_options = {
    enableHighAccuracy: true,
    maximumAge        : 30000,
    timeout           : 27000
  };

  var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
  */
  getLocation(): Observable<Position> {
    return Observable.create((observer) => {
      const watchID = navigator.geolocation.watchPosition((position: Position) => {
        observer.next(position);
      });
      return () => {
        navigator.geolocation.clearWatch(watchID);
      };
    });
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }

1

Hãy sử dụng các chức năng mũi tên chất béo mới nhất :

navigator.geolocation.getCurrentPosition((loc) => {
  console.log('The location in lat lon format is: [', loc.coords.latitude, ',', loc.coords.longitude, ']');
})
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.