2016-07-29 3 views
0
나는 주어진 위도의 위치와 경도를 얻고있다

:구글 지오 코더는 요청 값과 다른 위도와 경도를 반환

getLocationFromCoords(lat, lng) { 
    var geocoder = new google.maps.Geocoder(); 
    var latLng = new google.maps.LatLng(parseFloat(lat), parseFloat(lng)); 
    geocoder.geocode({ 
     'latLng': latLng 
    }, function (results, status) { 
     if (status === google.maps.GeocoderStatus.OK) { 
      if (typeof results[0].geometry.location != 'undefined') { 

       console.log(lat, lng); 
       console.log(results[0].geometry.location.lat(), results[0].geometry.location.lng()); 

       // set the location 
      } else { 
       //... 
      } 
     }); 
    }); 
} 

문제는 results[0].geometry.location에서 위도와 경도의 값 차이가 있다는 것입니다 요청. 콘솔에서 위의 코드가 표시

38.9067339 1.4205983

38.9069681 1.4205133000000387

그래서 난 아무것도 놓친 거지? 왜 같은 가치가 아닌가?

+1

? LatLong으로 주소를 지정하거나 LatLong에 주소를 지정 하시겠습니까? –

+0

@ TuğcaEker - LatLong으로 주소 지정 (위도 및 경도 포함). – Manolo

+1

확인. 좌표를 주소로 변환하기 위해 ** 역 지오 코딩 **을 적용합니다. Google은 가장 가까운 기록을 사용자에게 반환하기 때문에 정확히 동일한 GeoLocation을 얻을 수 없습니다. 내가 점검 할 때, 기대와 결과 사이에는 20-30 미터 밖에 없습니다. 걱정하지 마세요. 정상입니다. –

답변

1

지오 코딩 또는 역 지오 코딩은 정확한 결과를 제공 할 수 없습니다. LatLong으로 주소 지정을하면 Google에서 가장 적절하고 가까운 레코드를 얻을 수 있습니다. 그것은 정상적인 행동입니다. 또한 Google의 공식 예제도 동일한 동작을합니다. (오류 또는 문제점 아님).

이것을 확인하십시오. fiddle; 당신이 알고있는 주소 또는 알려진 장소를 검색 할 때

function initMap() { 
 
    var map = new google.maps.Map(document.getElementById('map'), { 
 
    zoom: 8, 
 
    center: {lat: 40.731, lng: -73.997} 
 
    }); 
 
    var geocoder = new google.maps.Geocoder; 
 
    var infowindow = new google.maps.InfoWindow; 
 

 
    document.getElementById('submit').addEventListener('click', function() { 
 
    geocodeLatLng(geocoder, map, infowindow); 
 
    }); 
 
} 
 

 
function geocodeLatLng(geocoder, map, infowindow) { 
 
    var input = document.getElementById('latlng').value; 
 
    var latlngStr = input.split(',', 2); 
 
    var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])}; 
 
    geocoder.geocode({'location': latlng}, function(results, status) { 
 
    if (status === 'OK') { 
 
     if (results[1]) { 
 
     map.setZoom(11); 
 
     var marker = new google.maps.Marker({ 
 
      position: latlng, 
 
      map: map 
 
     }); 
 
     infowindow.setContent(
 
     \t results[1].formatted_address + "<br />" + results[1].geometry.location 
 
     ); 
 
     infowindow.open(map, marker); 
 
     } else { 
 
     window.alert('No results found'); 
 
     } 
 
    } else { 
 
     window.alert('Geocoder failed due to: ' + status); 
 
    } 
 
    }); 
 
}
html, body { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
#map { 
 
    height: 100%; 
 
} 
 
#floating-panel { 
 
    position: absolute; 
 
    top: 10px; 
 
    left: 25%; 
 
    z-index: 5; 
 
    background-color: #fff; 
 
    padding: 5px; 
 
    border: 1px solid #999; 
 
    text-align: center; 
 
    font-family: 'Roboto','sans-serif'; 
 
    line-height: 30px; 
 
    padding-left: 10px; 
 
} 
 
#floating-panel { 
 
    position: absolute; 
 
    top: 5px; 
 
    left: 50%; 
 
    margin-left: -180px; 
 
    width: 350px; 
 
    z-index: 5; 
 
    background-color: #fff; 
 
    padding: 5px; 
 
    border: 1px solid #999; 
 
} 
 
#latlng { 
 
    width: 225px; 
 
}
<div id="floating-panel"> 
 
    <input id="latlng" type="text" value="40.714224,-73.961452"> 
 
    <input id="submit" type="button" value="Reverse Geocode"> 
 
</div> 
 
<div id="map"></div> 
 
<!-- Replace the value of the key parameter with your own API key. --> 
 
<script async defer 
 
src="https://maps.googleapis.com/maps/api/js?callback=initMap"> 
 
</script>

0

지오 코딩 (위도 - 경도하는 위치 쌍과 그 반대의 일치는) 만 정확합니다. 모든 실제 주소에 대한 정확한 정보를 제공하는 데이터베이스가 있습니다. 그리고 이러한 종류의 데이터를 사용하는 데 특화된 서비스와 API가 있습니다. 예를 들어 주소 확인 서비스는 실제 주소 목록을 검색합니다. 그들은 주소 입력을 파싱하고 입력이 실제 주소인지 여부를 결정할 수 있습니다. 이러한 서비스를 사용하는 사람들 (예 : 배송을 취급하는 사람)의 경우 정확한 주소가 중요합니다.

그러나 대부분의 지오 코딩 서비스는 완벽한 입력 정보가 ​​없어도 입력에 맞는 공식 데이터가없는 경우 사용자에게 대답하는 것을 선호합니다. 예를 들어 Google의 매핑 서비스는 입력이 실제 주소가 아니더라도 결과를 제공합니다. 좋은 알고리즘을 사용하여지도에서 '예상 추측'을합니다. Google 서비스에 대한 여러 가지 좋은 점이 있지만 약점 중 하나는 정확한 답변이 아닌 것입니다.

다른 경우 큰 공공 장소 또는 다른 지명 된 위치가 많은 위도 및 경도 쌍과 일치 할 수 있지만 이름과 일치하는 데이터는 검색 입력과 약간 다릅니다.

구체적인 경우 귀하의 위도 및 경도 입력이 실제 경계표 또는 장소에 매우 근접하여 귀하가 원하는 것으로 가정 한 것으로 보였을 수 있습니다. 또는 장소가 크고 (공원과 같이) 공원에 대한 Google의 정보는 '중간'과 다른 지점을 나타냅니다.

Google의 결과는 이미 언급했듯이 일반적으로 비슷합니다. 이러한 서비스 중 하나를 사용하고 위도와 경도를 입력하고 해당 위치를 검색 한 다음 위도와 경도로 다시 변환하면 약간의 변경이있을 수 있습니다.


(전체 공개 : 나는, SmartyStreets에 대한 주소 확인 회사를 작동합니다.) 당신이 뭘 하려는지