2017-11-21 3 views
0

"インフォボックス"に 'panoramaview'を表示しようとしています。 しかし、私は 'Uncaught TypeError:' google.maps.geometry.spherical.computeHeading 'を使用しようとすると、プロパティ' lat 'of undefinedを読み取れません。"Uncaught TypeError:未定義のプロパティ 'lat'を読み取ることができません"

何が間違っているかチェックできますか?

var myMap; 
var myMarkerList=[]; 
var myBound; 
var myStreetView; 
var radius; 
var clickedMarker; 
var m_mark; 

var initMap = function(){ 
    var myStyleType = new google.maps.StyledMapType(myStyles,{name: 'Styled Map'}); 
    myMap = new google.maps.Map(document.getElementById('googleMap'), { 
     center:{lat:40.7413549, lng:-73.9980244}, 
     zoom:13, 
     mapTypeControlOptions:{ 
      mapTypeIds:['roadmap', 'satellite', 'hybrid', 'terrain', 
      'styled_map'] 
     } 
    }); 

    myMap.mapTypes.set('styled_map', myStyleType); 
    myMap.setMapTypeId('styled_map'); 

    google.maps.event.addListener(myMap, 'click', function(event){ 
     setMarkerList(event.latLng); 
     openInfoWindow(event.latLng); 
    }); 
    myBound = new google.maps.LatLngBounds(); 

      m_mark = new google.maps.Marker({ 
      position:{lat: 40.7713024, lng: -73.9632393}, 
      map:myMap, 
      title:'Park Ave Penthouse', 
      animation: google.maps.Animation.DROP, 
      }); 

      m_mark.addListener('click', function(){ 
      openStreetView(this); 
      clickedMarker = this; 
      }); 


    myStreetView = new google.maps.StreetViewService(); 
    radius = 50; 

} 

function setMarkerList(pos){ 
    var myMarker = new google.maps.Marker({ 
      position:pos, 
      map:myMap, 
      animation: google.maps.Animation.DROP, 
    }); 

    myMarker.addListener('click', function(){ 
     openStreetView(this); 
     clickedMarker = this; 
    }); 

    myMarkerList.push(myMarker); 

    setBound(myMarker); 
} 

function openStreetView(targetMarker){ 

    myStreetView.getPanoramaByLocation(targetMarker.position, radius, getParanomaView); 
} 

function getParanomaView(data, status){ 

    var myInfo = new google.maps.InfoWindow(); 
    if (status = google.maps.StreetViewStatus.OK) { 
     var nearStreetViewLocation = data.location.latlng; 

     var heading = google.maps.geometry.spherical.computeHeading(nearStreetViewLocation, clickedMarker.position); 
     myInfo.setContent('<div>'+clickedMarker.title+'</div><div id="panorama"></div>'); 
     var panoramaOptions = { 
        position:nearStreetViewLocation, 
        pov: { 
         heading: heading, 
         pitch: 30 
        } 
       }; 
      var panorama = new google.maps.StreetViewPanorama(document.getElementById('panorama'),panoramaOptions); 
    } 
    else{ 
     myInfo.setContent('<div>'+clickedMarker.title+'</div><div>No Street View Found</div>'); 
    } 
    myInfo.open(myMap, targetMarker); 
} 

私はこれを引き起こしている可能性があるので、もはや就任していないので、私は非常に助けていただければ幸いです。

+0

これは、 'comp.Heading'行の上に' console.log(nearStreetViewLocation); '' console.log(clickedMarker.position);という行を追加するようなエラーが表示されたときに、実際にどのデータを送信しようとしているかを確認します。これらのGoogleのオブジェクトのいくつかは把握するためのクマです。 (ブラウザでF12キーを押すことで、これらのログ行がデベロッパーコンソールに表示されます) –

+1

'if(status = google.maps.StreetViewStatus.OK)'での代入ではありません。私は状態がOKではないと思う。 – James

+1

あなたはタイプミスがあります: 'var nearStreetViewLocation = data.location.latlng;'は 'var nearStreetViewLocation = data.location.latLng;'にする必要があります。他のコメント/回答のほとんどは有効ですが、エラー。 – geocodezip

答えて

0

(その他のコメントの)レビューの後、getParanomaView()機能にはいくつかの問題があります。それは次のようになります。

function getParanomaView(data, status){ 
    var myInfo = new google.maps.InfoWindow(); 
    if (status == google.maps.StreetViewStatus.OK) { 
     var nearStreetViewLocation = data.location.latLng; 

     var heading = google.maps.geometry.spherical.computeHeading(nearStreetViewLocation, clickedMarker.getPosition()); 
     myInfo.setContent('<div>'+clickedMarker.title+'</div><div id="panorama"></div>'); 
     var panoramaOptions = { 
      position:nearStreetViewLocation, 
      pov: { 
       heading: heading, 
       pitch: 30 
      } 
     }; 
     var panorama = new google.maps.StreetViewPanorama(document.getElementById('panorama'),panoramaOptions); 
    } else { 
     myInfo.setContent('<div>'+clickedMarker.title+'</div><div>No Street View Found</div>'); 
    } 
    myInfo.open(myMap, targetMarker); 
} 

前の回答

ラインvar heading = google.maps.geometry.spherical.computeHeading(nearStreetViewLocation, clickedMarker.position);

は、そうでない場合clickedMarker.positionは未定義になり

var heading = google.maps.geometry.spherical.computeHeading(nearStreetViewLocation, clickedMarker.getPosition());

でなければなりません。

関連する問題