2008-10-21 45 views
38

Có ai biết liệu iPhone có hỗ trợ hoặc sẽ sớm hỗ trợ W3C Geolocation specification không?API vị trí địa lý trên iPhone

Tôi đang tìm cách xây dựng ứng dụng cho người dùng di động, nhưng thay vì dành thời gian phát triển ứng dụng cho mọi nền tảng khác nhau (iPhone, Android, v.v ...), tôi muốn tạo ứng dụng web sử dụng Tiêu chuẩn W3C.

Trả lời

45

Mã này làm việc cho tôi - trên Trình duyệt web iPhone Safari là phần thưởng bổ sung mà thậm chí nó còn hoạt động với FireFox 3.5 trên máy tính xách tay của tôi! Đặc tả API vị trí địa lý là một phần của tiêu chuẩn của Hiệp hội W3 Nhưng được cảnh báo: Chưa được hoàn thành.

alt text http://blog.bemoko.com/wp-content/uploads/2009/06/iphone-geo-300-1-150x150.jpgalt text http://blog.bemoko.com/wp-content/uploads/2009/06/iphone-geo-300-2-150x150.jpg

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Geolocation API Demo</title> 
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport"/> 
<script> 
function successHandler(location) { 
    var message = document.getElementById("message"), html = []; 
    html.push("<img width='256' height='256' src='http://maps.google.com/maps/api/staticmap?center=", location.coords.latitude, ",", location.coords.longitude, "&markers=size:small|color:blue|", location.coords.latitude, ",", location.coords.longitude, "&zoom=14&size=256x256&sensor=false' />"); 
    html.push("<p>Longitude: ", location.coords.longitude, "</p>"); 
    html.push("<p>Latitude: ", location.coords.latitude, "</p>"); 
    html.push("<p>Accuracy: ", location.coords.accuracy, " meters</p>"); 
    message.innerHTML = html.join(""); 
} 
function errorHandler(error) { 
    alert('Attempt to get location failed: ' + error.message); 
} 
navigator.geolocation.getCurrentPosition(successHandler, errorHandler); 
</script> 
</head> 
<body> 
<div id="message">Location unknown</div> 
</body> 
</html> 
+0

Rất tiếc! Điều này không còn hoạt động! Xem: http://bemoko.com/blog/iphonegeo – Rimian

+0

hoạt động với tôi bây giờ – Jamie

+0

và nó cũng hoạt động với chrome trên linux! –

-3

Hiện tại, không thể có được vị trí GPS của iPhone chỉ bằng API JavaScript. Có được nói rằng điều này sẽ được tốt đẹp, nhưng tất nhiên Apple sẽ không bình luận về những cải tiến trong tương lai ở nơi công cộng.

+2

Vị trí địa lý W3C Tôi tin rằng được hỗ trợ bởi bản nâng cấp 3.0 sắp xảy ra của Iphone. – hendry

+0

Có sự phát triển nào về vấn đề này không? – Jack

-1

Có thể nhận thông tin GPS bằng JavaScript trên iPhone. Khung QuickConnectiPhone hiển thị điều này cho bạn cũng như thông tin tăng tốc.

Để nhận thông tin này, bạn sẽ phải cài đặt ứng dụng trên thiết bị. Khung này sẽ sớm có sẵn cho các ứng dụng được cài đặt Android cũng như Nokia.

Bạn có thể đặt ứng dụng của mình vào khung công tác cho từng thiết bị, biên dịch và gửi.

QuickConnectiPhone có sẵn tại https://sourceforge.net/projects/quickconnect/

và nếu bạn liên hệ với tôi rằng tôi có thể cung cấp cho bạn các phiên bản trước khi phát hành dành cho Android và Nokia.

-1

Rhodes hứa hẹn một giải pháp "phát triển một lần chạy khắp mọi nơi". Đã không thử chúng bản thân mình.

0

Khoảng cách này là lý do tại sao tôi phát triển ứng dụng có thể định vị - về cơ bản nó là một trình cắm thêm cho iPhone Safari. Hiện tại nó chỉ có sẵn cho điện thoại jailbroken.

Xem http://lbs.tralfamadore.com/

2

Tôi đã cập nhật mã MyWhirledView. Hoạt động tốt trên thiết bị iOS 4.3 của tôi. Google không còn yêu cầu khóa API để truy cập vào thư viện bản đồ tĩnh của họ nữa.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>iPhone 4.0 geolocation demo</title> 
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport"/> 
<script> 
function handler(location) { 
var message = document.getElementById("message"); 
message.innerHTML ="<img src='http://maps.google.com/maps/api/staticmap?center=" + location.coords.latitude + "," + location.coords.longitude + "&zoom=14&size=256x256&maptype=roadmap&sensor=false&markers=color:blue%7Clabel:ABC%7C" + location.coords.latitude + "," + location.coords.longitude + "' />"; 



message.innerHTML+="<p>Longitude: " + location.coords.longitude + "</p>"; 
message.innerHTML+="<p>Accuracy: " + location.coords.accuracy + "</p>"; 
message.innerHTML+="<p>Latitude: " + location.coords.latitude + "</p>"; 



} 
navigator.geolocation.getCurrentPosition(handler); 
</script> 
</head> 
<body> 
<div id="message">Location unknown</div> 
</body> 
</html> 
+0

Cảm ơn bạn đã viết mã! Nó hoạt động trên iPhone 5 iOS 6 của tôi, sau khi tôi xóa khai báo XML trên dòng đầu tiên –

-1

thư viện javascript nhỏ Đây là cross-platform và hỗ trợ tất cả các smartphone hiện đại ra khỏi hộp:

http://code.google.com/p/geo-location-javascript/

Đây là cách bạn sử dụng nó :

//determine if the handset has client side geo location capabilities 
if(geo_position_js.init()){ 
    geo_position_js.getCurrentPosition(success_callback,error_callback); 
}else{ 
    alert("Functionality not available"); 
} 
Các vấn đề liên quan