2012-04-15 5 views
4

현재 Google Place API로 웹 사이트를 업그레이드하고 있으며 작동하지 않을 때까지 한 가지 더 문제가 있습니다. 왜이 오류 메시지가 표시되는지 이해할 수 없습니다. Uncaught TypeError: Cannot read property 'value' of null. 나는 전체 Places Library을 읽고 심지어 전체 "example file"을 스캔했지만 내 코드는 정확히 동일합니다. 여기 Google 프레이즈 API에서 "Uncaught TypeError : null 값의 속성 '을 읽을 수 없습니다.

내 코드입니다 :

var geocoder; 
var map; 
var myplace = '<?php echo str_replace(" ", "-", utf8_encode($_COOKIE["wrn-myplace"])); ?>'; 
var myplace_clean = '<?php echo $_COOKIE["wrn-myplace"]; ?>'; 

geocoder = new google.maps.Geocoder(); 
geocoder.geocode({'address' : myplace_clean}, function(results, status) { 
    if(status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var myplace_center = results[0].geometry.location; 

     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 

     var myplaceControlDiv = document.createElement('div'); 
     var myplaceControl = new MyPlaceControl(myplaceControlDiv, map, myplace_center); 

     myplaceControlDiv.index = 2; 
     map.controls[google.maps.ControlPosition.TOP_RIGHT].push(myplaceControlDiv); 
    } else { 
     alert('Funktionen "geocoder" kunde inte användas på grund av följande fel: ' + status); 
    } 
}); 

var mapOptions = { 
    streetViewControl: false, 

    mapTypeControl: true, 
    navigationControlOptions: { 
     style: google.maps.NavigationControlStyle.SMALL 
    }, 

    zoomControl: true, 
    zoomControlOptions: { 
     style: google.maps.ZoomControlStyle.SMALL, 
     position: google.maps.ControlPosition.TOP_LEFT 
    }, 

    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 



map = new google.maps.Map(
    document.getElementById('weather-map'), mapOptions 
); 


var input = document.getElementById('google-search'); 
var autocomplete = new google.maps.places.Autocomplete(input); 

autocomplete.bindTo('bounds', map); 
google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    var place = autocomplete.getPlace(); 
    if(place.geometry.viewport) { 
     map.fitBounds(place.geometry.viewport); 
    } else { 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: place.geometry.location 
     }); 

     map.setCenter(place.geometry.location); 
     map.setZoom(17); 
    } 
}); 


var cloudControlDiv = document.createElement('div'); 
var cloudControl = new CloudControl(cloudControlDiv, map); 

cloudControlDiv.index = 1; 
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(cloudControlDiv); 


var fullscreenControlDiv = document.createElement('div'); 
var fullscreenControl = new FullscreenControl(fullscreenControlDiv, map); 

fullscreenControlDiv.index = 3; 
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(fullscreenControlDiv); 


var boxText = document.createElement("div"); 
boxText.style.cssText = 'background-color: #000000; border: 1px solid #ffffff; color: #eaeaea; font-family: Arial; font-size: 11px; padding: 5px 10px 5px 10px;'; 
boxText.innerHTML = 'Du är här'; 

var myPopup = { 
     content: boxText, 
     disableAutoPan: false, 
     maxWidth: 300, 
     pixelOffset: new google.maps.Size(-100, -100), 
     zIndex: null, 
     boxStyle: { 
      opacity: 0.80, 
      width: '200px' 
     }, 
     closeBoxMargin: '3px', 
     closeBoxURL: 'http://p.yusukekamiyamane.com/icons/search/fugue/icons/cross-octagon-frame.png', 
     infoBoxClearance: new google.maps.Size(1, 1), 
     isHidden: false, 
     enableEventPropagation: true 
}; 


var cloudLayer = new google.maps.weather.CloudLayer(); 
cloudLayer.setMap(map); 

elevator = new google.maps.ElevationService(); 
google.maps.event.addListener(map, 'click', getElevation); 

map.setZoom(10); 

$('#weather-data').load('jquery-fetch/fetch-weatherdata.php?place=' + myplace); 

show_positioninitialize 함수 호출이 내 오류 메시지에 대한 "설명"입니다 :

kK 
tK.(anonymous function).dl 
(anonymous function) 
(anonymous function)%7Bmain,places,weather%7D.js:9 
bf.(anonymous function).Hc.c%7Bmain,places,weather%7D.js:24 
O%7Bmain,places,weather%7D.js:9 
df%7Bmain,places,weather%7D.js:24 
hf%7Bmain,places,weather%7D.js:24 
(anonymous function) 
ef.controls 
(anonymous function)%7Bmain,places,weather%7D.js:24 
b%7Bmain,places,weather%7D.js:10 
bf.(anonymous function).Hc%7Bmain,places,weather%7D.js:24 
O%7Bmain,places,weather%7D.js:9 
bf.(anonymous function).Hc%7Bmain,places,weather%7D.js:24 
af.(anonymous function).ke%7Bmain,places,weather%7D.js:23 
bf.(anonymous function).Hc%7Bmain,places,weather%7D.js:24 
ff%7Bmain,places,weather%7D.js:24 
(anonymous function) 

내가에서 JS 파일에 대한 전화 드렸습니다을 Google like this :

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key={my API key}&sensor=false&libraries=weather,places"></script> 

문제?

미리 감사드립니다.

답변

8

이제 문제가 해결되었습니다. 분명히 DIV 태그 안에 텍스트 필드가 있어야합니다.

+0

타인의 이익을 위해 답변을 업데이트 할 수 있습니까? – Prakhar

5

동일한 오류가 발생했습니다. id Places가 예상 된 요소가 존재하지 않습니다. 잘못 입력 된 요소 ID 또는 복사/붙여 넣기 코드가 있는지 확인하십시오.

관련 문제