Как я могу получить местоположение пользователя в правиле KRL?Как я могу получить местоположение пользователя в правиле KRL?
- Что такое метод?
- В чем преимущество или недостаток использования этого метода?
Как я могу получить местоположение пользователя в правиле KRL?Как я могу получить местоположение пользователя в правиле KRL?
Вот простой пример
rule locations is active {
select using ".*" setting()
pre {
whereareyou = location:region();
msg = <<
#{whereareyou}
>>;
}
notify("I think you live in", msg) with sticky = true;
}
А вот Документы. http://docs.kynetx.com/docs/Location
Проблема, которую вы обнаружите, заключается в том, что иногда ip фактически не представляет собой реальное местоположение пользователя, поскольку пользователь может использовать прокси-сервер. Также с большинством интернет-провайдеров ip зарегистрирован в местоположении и концентратор ISP, а не прямое место, где IP используется в любой момент.
С появлением html 5 и местоположения apis в браузере в будущем может оказаться возможным получить более точное местоположение, но это еще не реализовано в KRL.
Расположение браузера HTM5 доступно сейчас, но для его совершения требуется некоторый javascript. Это немного старое приложение, в котором используются API-интерфейсы браузера. Вероятно, это может быть обновлено, чтобы не использовать форму, но вот для справки:
ruleset a8x47 {
meta {
name "WikiNearMe"
description <<
Shows Wikipedia content near the user.
>>
author "TubTeam"
logging off
}
dispatch {
domain "wikipedia.org"
}
global {
datasource placearticles:JSON <- "http://ws.geonames.org/findNearbyWikipediaJSON";
}
rule getlocation is active {
select when pageview "/wiki/" setting()
pre {
form = <<
<div id="my_div">
<form id="nearmeform" onsubmit="return false" style="display:none;">
<input type="text" name="lat" id="nearmelat"/>
<input type="text" name="lon" id="nearmelon"/>
<input type="submit" value="Submit" />
</form>
<div id="nearmelinks" style="text-align:left;">
<h2>Nearby Links</h2>
</div>
</div>
>>;
}
// notify("Hello World", "This is a sample rule.");
emit <<
navigator.geolocation.getCurrentPosition(function(position){
$K("#nearmelat").val(position.coords.latitude);
$K("#nearmelon").val(position.coords.longitude);
$K("#nearmeform").submit();
//alert("lat: " + position.coords.latitude + " lon: " + position.coords.longitude);
});
>>
{
append("#siteNotice", form);
watch("#nearmeform", "submit");
}
}
rule shownearby is active {
select when web submit "#nearmeform"
foreach datasource:placearticles({"lat":page:param("lat"), "lng":page:param("lon"), "style":"full", "formatted":"true"}).pick("$..geonames") setting (item)
pre {
title = item.pick("$..title");
link = item.pick("$..wikipediaUrl");
}
append("#nearmelinks", "<a href='http://#{link}'>#{title}</a><br/>");
}
}
+1, Это интересно. Благодаря! – Alex 2010-12-01 17:11:14