2016-07-29 9 views
0
Iが与えられた緯度の位置と経度を取得してい

Googleのジオコーダは、要求値とは異なる緯度と経度を返す

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

あなたはappliyng **逆ジオコーディング**を使用して座標をアドレスに変換します。 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のサービスには多くの良い点がありますが、弱点の1つは正確ではない回答です。

大きな公共の場所などの名前のある場所は、多くの緯度と経度のペアと一致することがありますが、名前に一致するデータは検索入力とは少し異なります。

具体的には、緯度と経度の入力が実際のランドマークや場所に非常に近く、あなたが望むものと想定されていた可能性があります。または、公園のような場所が大きく、その公園のGoogleの情報が「中」と異なる場所を特定しています。

Googleの結果は、すでに述べたとおり、通常は近いです。これらのサービスのいずれかを使用して緯度と経度を入力し、対応する場所を検索して緯度と経度に変換すると、わずかな変更があった可能性があります。


(フル開示:私は、アドレス検証会社、SmartyStreetsのために働く。)

関連する問題