2014-08-18 2 views
0

Я хотел бы иметь свою собственную кнопку «Просмотр улиц» с помощью Google Maps api v3. Когда кнопка нажата, я хочу, чтобы это загрузило уличное представление на основе моего latlng маркера. Затем я хочу, чтобы кнопка изменилась, чтобы сказать «Назад к карте», и это снова загрузило бы представление карты по умолчанию.Пользовательская кнопка уличного просмотра/управление

Я пытаюсь использовать getStreetView (myLatlng), когда кнопка нажата, но она не загружает вид на улицу, поэтому я должен что-то пропускать здесь, но я не могу найти никакой помощи для этого в Интернете. Вот мой код: -

 var map; 
    var myLatlng = new google.maps.LatLng(42.333029,-83.04559); 

    /** 
    * The HomeControl adds a control to the map that simply 
    * returns the user to Chicago. This constructor takes 
    * the control DIV as an argument. 
    * @constructor 
    */ 
    function customStreetView(controlDiv, map) { 

     // Offset from the corner 
     controlDiv.style.padding = '10px'; 

     // Create control div 
     var controlUI = document.createElement('div'); 
     controlUI.innerHTML = "View on street"; 
     controlUI.className = "google_map_button" 
     controlDiv.appendChild(controlUI); 

     // Setup the click event listener 
     google.maps.event.addDomListener(controlUI, 'click', function() { 
     var panorama = map.getStreetView(myLatlng); 
     if(panorama){panorama.setVisible(false);} 
     }); 

    } 

    function initialize() { 

     var mapOptions = { 
      zoom: 17, 
      center: myLatlng, 
      panControl: true, 
      zoomControl: true, 
      mapTypeControl: false, 
      scaleControl: true, 
      streetViewControl: false, 
      overviewMapControl: true 
     } 

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

     // Set the marker 
     var marker = new google.maps.Marker({ 
      position: myLatlng, 
      map: map, 
      icon: 'images/google-map-marker.png' 
     }); 

     // Create the DIV to hold the control and 
     // call the HomeControl() constructor passing 
     // in this DIV. 
     var homeControlDiv = document.createElement('div'); 
     var homeControl = new customStreetView(homeControlDiv, map); 

     homeControlDiv.index = 1; 

     map.controls[google.maps.ControlPosition.TOP_RIGHT].push(homeControlDiv);  

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

    </script> 

Может ли кто-нибудь помочь?

Благодаря

ответ

2
  1. , конечно, вы должны установить visible в true, когда вы хотите, чтобы показать панораму
  2. position не будет установлен с помощью аргумента getStreetView(), необходимо установить свойство через set, setValues, или setOptions

    google.maps.event.addDomListener(controlUI, 'click', function() { 
        map.getStreetView().setOptions({visible:true,position:myLatlng}); 
    }); 
    
+0

спасибо. Это отлично поработало. –

Смежные вопросы