2012-11-09 5 views
1

빌딩 등급에 맞는 주소가 포함 된 데이터베이스가 있습니다. Google지도의 검색에 수동으로 입력하면 Google지도에서 문제가없는 것으로 확인합니다. 올바른 건물 바로 위에 표시됩니다. 그러나 아래 코드를 사용하여 동일한 주소를 Google Maps API 지오 코더에 전달하면 마커는 건물이 아닌 거리에만 표시됩니다.Google지도 지오 코더가 Google지도만큼 정확하지 않습니다.

정확도를 높이려면 어떻게해야합니까?

HTML/PHP :

<div id="addressline"><?php echo theaddress(); ?></div> 

JS :

 function myGeocodeFirst() { 
     geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({'address': document.getElementById("addressline").innerHTML}, 
      function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       firstLoc = results[0].geometry.location; 
       map = new google.maps.Map(document.getElementById("map_canvas"), 
       { 
       center: firstLoc, 
       zoom: 15, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
       }); 
       markers = new google.maps.Marker({ 
       position: firstLoc, 
       map: map, 
     }); 

      } 
      else { 
       document.getElementById("text_status").value = status; 
      } 
      } 
     ); 
     } 
window.onload=myGeocodeFirst; 
+0

올바른 위치가 이미있는 경우 왜 지오 코더를 사용하고 있습니까? Google지도에서보고하는 위치가 지오 코더가 아닌 지역 정보 데이터베이스의 항목이 아닙니까? 예제를 제공 할 수 있습니까? – geocodezip

+0

나는 위도/경도가 없으며 양식의 주소는 123 Road, City, P05T C0D3 – user1444027

+0

문제를 보여주는 주소가 있습니까? – geocodezip

답변

3

Google지도는지도에 대한 검색 결과를 찾을 수 서로 다른 데이터 소스의 번호를 사용합니다.

"정확함"으로 표시되는 항목은 지역 정보 데이터베이스 항목입니다. this page을보고 검색 문자열을 입력하십시오 (St Clement 's Church, Edge Lane, Chorlton, M21 9JF). 그것은 정확한 결과를 반환 할

지오 코더가 우편 주소에 대한 좌표를 반환하도록 설계됩니다, 당신의 문자열에 충분한 정보가되지 않습니다 : 그것은 단지에 대한 지오 코드를 반환처럼

http://www.geocodezip.com/v3_example_geo2.asp?addr1=St%20Clement%E2%80%99s%20Church,%20Edge%20Lane,%20Chorlton,%20M21%209JF&geocode=1

같습니다 우편 번호 :

Manchester M21 9JF, UK (53.4414411, -2.285287100000005) 

지오 코더에 그 위치가있는 것처럼 보입니다. 나는 "세인트 클레멘트 교회, 가장자리 레인"을 사용하는 경우 (이것은 "대략적인"보고 있지만)

http://www.geocodezip.com/v3_example_geo2.asp?addr1=St%20Clement%E2%80%99s%20Church,%20Edge%20Lane,%20Chorlton,%20M21%209JF&geocode=1&addr2=St%20Clement%E2%80%99s%20Church,%20Edge%20Lane&geocode=2

St Clement's Church, 6 Edge Ln, Manchester, Lancashire M21 9JF, UK (53.4406823, -2.283755499999984) 

proof of concept fiddle

코드를 "옥상"지오를 얻을 것 같다 :

var geocoder, map, service, infowindow, bounds; 
 

 
function initialize() { 
 
    map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(37.4419, -122.1419), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    var request = { 
 
    query: "St Clement’s Church, Edge Lane, Chorlton, M21 9JF" 
 
    } 
 
    infowindow = new google.maps.InfoWindow(); 
 
    service = new google.maps.places.PlacesService(map); 
 
    bounds = new google.maps.LatLngBounds(); 
 
    service.textSearch(request, callback); 
 

 
} 
 
google.maps.event.addDomListener(window, "load", initialize); 
 

 
function callback(results, status) { 
 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
 
    for (var i = 0; i < results.length; i++) { 
 
     var place = results[i]; 
 
     var marker = createMarker(results[i]); 
 
     bounds.extend(marker.getPosition()) 
 
    } 
 
    map.fitBounds(bounds); 
 
    google.maps.event.trigger(marker, 'click'); 
 
    } 
 
} 
 

 
function createMarker(place) { 
 
    var placeLoc = place.geometry.location; 
 
    var marker = new google.maps.Marker({ 
 
    map: map, 
 
    position: place.geometry.location 
 
    }); 
 

 
    google.maps.event.addListener(marker, 'click', function() { 
 
    infowindow.setContent(place.name); 
 
    infowindow.open(map, this); 
 
    }); 
 
    return marker; 
 
}
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script> 
 
<div id="map_canvas"></div>

+0

내 주소가 부분적인 것 같이 감사합니다. 부분 주소로 Google지도 API에서 더 정확한 결과를 얻을 수있는 방법이 있습니까? 빌드 번호/이름, 도시/지역 및 우편 번호가 대부분 – user1444027

+0

있습니다. Places API가 데이터로 지오 코더보다 잘 작동하는지 확인할 수 있습니다. – geocodezip

+0

Google에서 Place API를 gecoder 데이터와 함께 사용하려면 어떻게해야하나요? @geocodezip –

관련 문제