获取地理位置以传播输入

Posted

技术标签:

【中文标题】获取地理位置以传播输入【英文标题】:Get a Geo Location to propagate an input 【发布时间】:2013-11-18 17:31:20 【问题描述】:

我正在使用 google api 来获取用户位置并遇到一些问题。它给了我确切的位置,这是第一个问题,其次我无法让它自己写入输入区域。

我希望它只获取城镇/城市而不是门牌号码、街道和县等...一旦确定,就可以传播关键字输入。

谁能建议如何做到这一点?

这是脚本:

   function displayLocation(latitude,longitude)
        var request = new XMLHttpRequest();

        var method = 'GET';
        var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude+'&sensor=true';
        var async = true;

        request.open(method, url, async);
        request.onreadystatechange = function()
          if(request.readyState == 4 && request.status == 200)
            var data = JSON.parse(request.responseText);
            var address = data.results[0];
            document.write(address.formatted_address);
          
        ;
        request.send();
      ;

      var successCallback = function(position)
        var x = position.coords.latitude;
        var y = position.coords.longitude;
        displayLocation(x,y);
      ;

      var errorCallback = function(error)
        var errorMessage = 'Unknown error';
        switch(error.code) 
          case 1:
            errorMessage = 'Permission denied';
            break;
          case 2:
            errorMessage = 'Position unavailable';
            break;
          case 3:
            errorMessage = 'Timeout';
            break;
        
        document.write(errorMessage);
      ;

      var options = 
        enableHighAccuracy: true,
        timeout: 1000,
        maximumAge: 0
      ;

      navigator.geolocation.getCurrentPosition(successCallback,errorCallback,options);

我相信将其传播到输入的特定行将是这一行:

    document.write(address.formatted_address);

我似乎无法让它工作:

document.getElementById('keyword').innerhtml=(address.formatted_address);

这里是Fiddle

【问题讨论】:

作为旁注,Google TOS 禁止使用未与地图一起使用的地理编码 API。 作为另一个旁注,HTML5 地理定位 API 和 Google 的 API 都是异步的,并且在文档加载足够奇怪之后调用 document.write 会覆盖整个文档。 它将与地图一起使用,它是地图搜索 【参考方案1】:

好的,想通了。该行是:

      document.getElementById("keyword").value = address.formatted_address;

这是完整的脚本FIDDLE

【讨论】:

以上是关于获取地理位置以传播输入的主要内容,如果未能解决你的问题,请参考以下文章

获取输入元素的光标或文本位置(以像素为单位)

获取文本输入字段中的光标位置(以字符为单位)

获取文本输入字段中的光标位置(以字符为单位)

JavaScript:通过鼠标单击获取输入文本位置(以字符为单位)

获取纬度/经度按钮以填充输入框

html 在Google地图上获取路线。用于创建表单的简单而强大的代码,用户可以在其中输入其位置以获取指定的方向