2013-10-19 3 views
1

자바 스크립트를 처음 사용했습니다. 나는 반대로 geocodification를 깨닫기 위하여 Google API Gmap v3를 사용하는 것을 시도하고있다. 나는 많은 튜토리얼을 읽고 간단한 코드를 썼다. 문제는 geocoder.geocode()에 전달 된 익명의 함수가 가끔 작동하지만 때로는 작동하지 않는 것입니다. 당신의 도움을 주셔서 감사합니다!. if (results && results.length >)을 : 구글 서비스가 null를 돌려 하늘의 배열,하지만 당신은 둘 다 사용을 확인할 수 있습니다 안전 할 것인지지오 코드 역 콜백 함수가 호출되지 않았습니다.

function geoCode(latStr,lngStr){ 


     var lat = parseFloat(latStr); 
     var lng = parseFloat(lngStr); 
     var latlng = new google.maps.LatLng(lat, lng); 

    codeLatLng(latlng,function(addr){ 
     alert(addr); // sometimes message appears. 
    }); 
    } 


    function codeLatLng(latlng,callback) { 
     if (geocoder) { 
     geocoder.geocode({'latLng': latlng}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
      if (results[1]) { 
       callback(results[1].formatted_address); 
      } else { 
       alert("No results found"); 
      } 
      } else { 
      alert("Geocoder failed due to: " + status); 
      } 
     }); 
     } 
    } 
+0

당신이 무엇을 의미합니까 위의 코드로 시도 "가끔 작동하지만, 때로는하지 않습니다"? 그런 일이 발생했을 때 그것을 어디에서 사용하고 있습니까? 다른 알리미가 있니? – geocodezip

+0

내 말은, 다른 경고를받지 못한다는 것입니다 ... 익명의 함수인데 때로는 호출되지 않습니다. – AntarticMonkey

답변

0

는 잘 모르겠어요. 또한 Javascript의 배열이 0 기반이라는 사실을 잊고 있습니까? 당신은 아마 results[0]를 원하는 :

if (results && results.length > 0) { 
    callback(results[0].formatted_address); 
} else { 
    alert("No results found"); 
} 

설명로서 : 코드 그러므로 나는 일시적인 오류를 추측하고있어, "결과는"길이가 0 또는 1의 배열의 경우, if (results[1])에 충돌 것입니다.

+0

당신이 맞습니다, 0 기반입니다. 예제를 기반으로 코드를 작성하고 그 예제는 결과를 얻었습니다 [1]. [0]을 사용해 보겠습니다 ... 감사합니다! – AntarticMonkey

0
var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 
      'latLng' : position 
     }, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       if (results[1]) { 
        address = results[1].formatted_address; 
        // alert("Wow ! Got it"); 
       } else { 
        // alert("No results 
        // found"); 
        infowindow.setContent("No address found"); 
       } 
      } else { 
       // alert("Geocoder failed due 
       // to: " + status); 
       infowindow.setContent("Geocoder failed due to: " + status); 
      } 
      infowindow.setContent(address + '<br/>' + Timestamp); 
     }); 

     infowindow.open(marker.get('map'), marker, this); 
     currentInfoWindow = infowindow; 

    }); 
} 

한 번

+0

정보 창은 무엇입니까? Google지도를 사용하여지도를 표시하지 않습니다. 나는 OpenLayers를 사용하고있다. 나는 단지 역 지오 코딩을 위해 google을 사용하기를 원한다. 당신의 도움을 주셔서 감사합니다. – AntarticMonkey

관련 문제