با سلام یه جوری هست که موقعیت کاربرو با javascript میده ولی حتما کاربر باید اجازه بده
خاصیت geoLocation
در بیشتر مرورگر ها راهی برای فهمیدن موقعیت کاربر در زمان حال وجود دارد که تمامی مرورگرها از طریق geoLocation به آن دسترسی پیدا می کنند:
navigator.geolocation.getCurrentPosition( secceedfn, failfn,timeout)
که به ترتیب تابعی که باید برای موفقیت ، انجام نشدن که به معنی رد شدن توسط کاربره و زمان تاخیر:
کد:
navigator.geolocation.getCurrentPosition(
function( pos ){
alert('!موفق شدیم');
for( var name in pos.coords ){
alert( name + "=" + pos.coords[ name ] );
}
}, function( e ){
alert('!موفق نشدیم'+e);
},
{
enableHighAccuracy: true,
maximumAge: 25000,
timeout: 5000
} );
در کد بالا اگر مرورگر شما پشتیبانی کنه و روی دکمه share location کلیک کنید،
اگر شما به اینترنت متصل باشید و دکمه share رو هم زده باشید تابع اول اجرا میشه که یک آرگومان داره.
اون آرگومان دارای خاصیت coords هست که موقعیت شما در درون اون به وسیله:
کد:
latitude —عرض جغرافیایی.
کد:
longitude — طول جغرافیایی.
accuracy — دقت
خاصیت های زیر در بعضی مرورگر ها وجود داره
altitude — ارتفاع.
altitudeAccuracy — دقت در اندازه گیری ارتفاع
heading — سمت جهت گیری قطب نمایی به صورت درجه
speed — میزان سرعت.
navigator.geolocation.getCurrentPosition(function( a){
alert("x: "+position.coords.latitude+" and y:"+positions.coords.longitude+";");
}, function(error){
console.log("Error code: " + error.code);
console.log("Error message: " + error.message);
});
حالا اگه روی share کلیک نکنید تابع دوم اجرا میشه که مثل try...catch یک آرگومان داره که ارور رو نشون میده و اون آرگومان دارای خاصیت message برای نشان دادن علت اشکال و code برای نمایش دادن کد اصلی.
قسمت سوم هم که برای خصوصیات اتصال و عمر اندازه گیری توسط تابع هست:
کد:
enableHighAccuracy — دقت در اندازه گیری ارتفاع برای نمایش اعشار
maximumAge — عمر تابع
timeout — زمان صبر کردن برای اجرا تابع در واحد میلی ثانیه( s*10^-3).
منبع:
http://html5doctor.com/finding-your-...h-geolocation/