Geolocation 如何确定网站访问者';s城市并以某种形式使用它

Geolocation 如何确定网站访问者';s城市并以某种形式使用它,geolocation,Geolocation,我正在为一家酒店制作一个网站。联系人/预订表单应包含一个文本字段,以便用户可以填写其原籍国/城市 我想实现一种地理跟踪、地理定位或其他功能,使我能够获取来源国/城市,并在表单字段中使用该信息,以便通过电子邮件将字段内容与其他信息一起发送 我在本网站中尝试了代码,我将其代码放在此处: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E

我正在为一家酒店制作一个网站。联系人/预订表单应包含一个文本字段,以便用户可以填写其原籍国/城市

我想实现一种地理跟踪、地理定位或其他功能,使我能够获取来源国/城市,并在表单字段中使用该信息,以便通过电子邮件将字段内容与其他信息一起发送

我在本网站中尝试了代码,我将其代码放在此处:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><script type="text/javascript">
//<![CDATA[
try{if (!window.CloudFlare) { var CloudFlare=[{verbose:0,p:0,byc:0,owlid:"cf",mirage:{responsive:0,lazy:0},oracle:"35/0f710f6add20ad3fc449c08c96bdf2",paths:{cloudflare:"/cdn-cgi/nexp/aav=366183412/"},atok:"3ef00aeff8d6c935da4e270822a8471b",zone:"maestrosdelweb.com",rocket:"0",apps:{"ga_key":{"ua":"UA-309831-1","ga_bs":"2"}}}];var a=document.createElement("script"),b=document.getElementsByTagName("script")[0];a.async=!0;a.src="//ajax.cloudflare.com/cdn-cgi/nexp/aav=4114775854/cloudflare.min.js";b.parentNode.insertBefore(a,b);}}catch(e){};
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
window.__CF=window.__CF||{};window.__CF.AJS={"ga_key":{"ua":"UA-309831-1","ga_bs":"2"}};
//]]>
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="robots" content="noindex,follow"/>
<title>Geolocalizacion con HTML5</title>
<link rel="shortcut icon" href="/favicon.ico"/>
<style type="text/css">img{border:0}</style>
<script type="text/javascript">
/* <![CDATA[ */
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-309831-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

(function(b){(function(a){"__CF"in b&&"DJS"in b.__CF?b.__CF.DJS.push(a):"addEventListener"in b?b.addEventListener("load",a,!1):b.attachEvent("onload",a)})(function(){"FB"in b&&"Event"in FB&&"subscribe"in FB.Event&&(FB.Event.subscribe("edge.create",function(a){_gaq.push(["_trackSocial","facebook","like",a])}),FB.Event.subscribe("edge.remove",function(a){_gaq.push(["_trackSocial","facebook","unlike",a])}),FB.Event.subscribe("message.send",function(a){_gaq.push(["_trackSocial","facebook","send",a])}));"twttr"in b&&"events"in twttr&&"bind"in twttr.events&&twttr.events.bind("tweet",function(a){if(a){var b;if(a.target&&a.target.nodeName=="IFRAME")a:{if(a=a.target.src){a=a.split("#")[0].match(/[^?=&]+=([^&]*)?/g);b=0;for(var c;c=a[b];++b)if(c.indexOf("url")===0){b=unescape(c.split("=")[1]);break a}}b=void 0}_gaq.push(["_trackSocial","twitter","tweet",b])}})})})(window);
/* ]]> */
</script>
</head>
<body onload="detectar()">
<h1>Ejemplo de geolocalizacion basado en HTML5</h1>
<div id="mapa">
</div>
<script src="http://code.google.com/apis/gears/gears_init.js" type="text/javascript" charset="utf-8"></script>
<script src="geo.js" type="text/javascript" charset="utf-8"></script>
<script language="javascript">
function detectar(){
if(geo_position_js.init())
{
    document.getElementById('mapa').innerHTML="Leyendo...";
    geo_position_js.getCurrentPosition(mostra_ubicacion,function(){document.getElementById('mapa').innerHTML="No se puedo detectar la ubicación"},{enableHighAccuracy:true});
}   else    {
    document.getElementById('mapa').innerHTML="La geolocalización no funciona en este navegador.";
}
}
function mostra_ubicacion(p){
var coords = p.coords.latitude + "," + p.coords.longitude;
document.getElementById('mapa').innerHTML="<p>latitud="+p.coords.latitude.toFixed(2)+" longitud="+p.coords.longitude.toFixed(2) + "</p>"
            +"<a href=\"http://maps.google.com/?q="+coords+"\"><img src=\"http://maps.google.com/maps/api/staticmap?center="+coords+"&maptype=hybrid&size=400x400&zoom=12&markers=size:mid|"+coords+"&sensor=false\" alt=\"mapa\"/></a>";
}
</script>
</body>
</html>

//
//
Geolocalizacion con HTML5
img{边界:0}
/*  */
Ejempo de geolocalizacion basado en HTML5
函数detectar(){
if(geo_position_js.init())
{
document.getElementById('mapa').innerHTML=“Leyendo…”;
geo_position_js.getCurrentPosition(mostra_ubicacion,function(){document.getElementById('mapa').innerHTML=“No se puedo detectar la ubicación”},{enableHighAccurance:true});
}否则{
document.getElementById('mapa').innerHTML=“La geologización no functiona en este navegador.”;
}
}
函数mostra_ubicacion(p){
var coords=p.coords.latitude+“,”+p.coords.longitude;
document.getElementById('mapa').innerHTML=“latitud=“+p.coords.latitude.toFixed(2)+”longitud=“+p.coords.longitud.toFixed(2)+”

” +""; }
但是,此代码返回一个带有用户地理坐标(纬度/经度)的地图

是否有一种简单的方法来确定这一点并在表单字段中使用该信息


提前感谢。

HTML5地理定位API将为您提供用户的纬度和经度(假设他们选择加入)。如果您需要获取城市、国家或邮政编码等信息,则需要使用反向地理编码web服务。有很多这样的人:

所以你选吧。。。只要确保查看条款和条件,确保网站上线后不会违反

您应该能够通过谷歌搜索找到代码示例,这是一个相当常见的用例。这些步骤将是:

  • 使用现有代码获取用户的lat/lng
  • 进行AJAX(JSONP)调用以请求反向地理代码(使用您的地理代码提供程序来确定要使用的URL。例如,对于Google它是什么样的)
  • 解析JSON响应以提取所需信息(国家、城市)

  • HTML5地理定位API将获得用户的纬度和经度(假设他们选择加入)。如果您需要获取城市、国家或邮政编码等信息,则需要使用反向地理编码web服务。有很多这样的人:

    所以你选吧。。。只要确保查看条款和条件,确保网站上线后不会违反

    您应该能够通过谷歌搜索找到代码示例,这是一个相当常见的用例。这些步骤将是:

  • 使用现有代码获取用户的lat/lng
  • 进行AJAX(JSONP)调用以请求反向地理代码(使用您的地理代码提供程序来确定要使用的URL。例如,对于Google它是什么样的)
  • 解析JSON响应以提取所需信息(国家、城市)
  • 另一个stackoverflow讨论了允许基于IP地址进行地理定位的Web服务

    您可以使用它来实现一个服务器端解决方案,该解决方案生成标记并填充其位置。

    另一个stackoverflow谈到了一种允许基于IP地址进行地理定位的Web服务


    您可以使用它来实现一个服务器端解决方案,该解决方案生成标记并填充它们的位置。

    老式的(仍然流行!)方法是反向查找客户端IP地址:)

    老式的(仍然流行!)方法是对客户端IP地址进行反向查找:)

    以便我可以看到此功能基于第三方服务?有没有一种方法可以在不依赖第三方服务的情况下实现它?GeoLite的答案是一个实际的数据库,因此您可以用任何希望使用的语言来实现它。请注意CreativeCommons许可证。那么我可以看出这个功能是基于第三方服务的吗?有没有一种方法可以在不依赖第三方服务的情况下实现它?GeoLite的答案是一个实际的数据库,因此您可以用任何希望使用的语言来实现它。请注意CreativeCommons许可证。我喜欢这种方式,但老实说,我对实现这种功能没有太多经验。非常感谢任何代码或示例。提前感谢。@GeppettvsD'constantzo如果您看到我的更新,我建议您尝试一些东西,然后根据需要返回SO询问具体问题。我喜欢这种方式,但老实说,我对实现此功能没有太多经验。非常感谢任何代码或示例。提前谢谢。@GeppettvsD'constantzo如果您看到我的更新,我建议您尝试一些东西,然后根据需要返回SO询问具体问题。正如我在@dbaseman的回答中提到的,我没有做这种实现的经验,我知道客户端IP地址的反向查找,但我还不知道如何获取该信息并将其放入表单中的文本框中。我真的很感谢你的帮助,如果你知道怎么做,请让我知道。谢谢你,正如我在@dbaseman的回答中提到的,我没有做这种实现的经验,我知道客户端IP地址的反向查找,但我还不知道如何获取该信息并将其放入表单中的文本框中。我真的很感谢你的帮助,如果你知道怎么做,请让我知道。非常感谢。