2016-06-08 116 views
-1

我想根據Google地圖中的標記點並排放置街景視圖窗口。這是我需要幫助的代碼:將Google街景和谷歌地圖並排放置標記點

<div id="property_map"></div> 
      <script> 
       /* Property Detail Page - Google Map for Property Location */ 

       function initialize_property_map(){ 

        var propertyMarkerInfo = <?php echo json_encode($property_marker); ?> 

        var url = propertyMarkerInfo.icon; 
        var size = new google.maps.Size(42, 57); 

        // retina 
        if(window.devicePixelRatio > 1.5) { 
         if (propertyMarkerInfo.retinaIcon) { 
          url = propertyMarkerInfo.retinaIcon; 
          size = new google.maps.Size(83, 113); 
         } 
        } 

        var image = { 
         url: url, 
         size: size, 
         scaledSize: new google.maps.Size(42, 57), 
         origin: new google.maps.Point(0, 0), 
         anchor: new google.maps.Point(21, 56) 
        }; 

        var propertyLocation = new google.maps.LatLng(propertyMarkerInfo.lat, propertyMarkerInfo.lang); 
        var propertyMapOptions = { 
         center: propertyLocation, 
         zoom: 15, 
         mapTypeId: google.maps.MapTypeId.ROADMAP, 
         scrollwheel: false 
        }; 
        var propertyMap = new google.maps.Map(document.getElementById("property_map"), propertyMapOptions); 
        var propertyMarker = new google.maps.Marker({ 
         position: propertyLocation, 
         map: propertyMap, 
         icon: image 
        }); 
       } 

       window.onload = initialize_property_map(); 
      </script> 

在developers.google.com我發現並排顯示谷歌地圖和街景側面驗證碼,這就是我想要的東西來實現,但我需要這是動態和更新,每當我移動標記點。

<div id="map"></div> 
<div id="pano"></div> 
<script> 

    function initialize() { 
    var fenway = {lat: 42.345573, lng: -71.098326}; 
    var map = new google.maps.Map(document.getElementById('map'), { 
     center: fenway, 
     zoom: 14 
    }); 
    var panorama = new google.maps.StreetViewPanorama(
     document.getElementById('pano'), { 
      position: fenway, 
      pov: { 
      heading: 34, 
      pitch: 10 
      } 
     }); 
    map.setStreetView(panorama); 
    } 
</script> 
<script async defer 
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initialize"> 
</script> 

我試圖複製/粘貼一段代碼負責街景全景,但沒有success.I將不勝感激任何幫助。

UPDATE: 我想這兩個代碼在一個組合,其結果是,谷歌地圖凍結(不能用鼠標拖動以上)和標記不見了以及街景窗口是空白的,以及。這是我試過的代碼:

<div id="property_map"></div> 
      <div id="pano" style="float:left; height:100%; width:45%"></div> 
      <script> 
       /* Property Detail Page - Google Map for Property Location */ 

       function initialize_property_map(){ 

        var propertyMarkerInfo = <?php echo json_encode($property_marker); ?> 

        var url = propertyMarkerInfo.icon; 
        var size = new google.maps.Size(42, 57); 

        // retina 
        if(window.devicePixelRatio > 1.5) { 
         if (propertyMarkerInfo.retinaIcon) { 
          url = propertyMarkerInfo.retinaIcon; 
          size = new google.maps.Size(83, 113); 
         } 
        } 

        var image = { 
         url: url, 
         size: size, 
         scaledSize: new google.maps.Size(42, 57), 
         origin: new google.maps.Point(0, 0), 
         anchor: new google.maps.Point(21, 56) 
        }; 

        var propertyLocation = new google.maps.LatLng(propertyMarkerInfo.lat, propertyMarkerInfo.lang); 
        var propertyMapOptions = { 
         center: propertyLocation, 
         zoom: 15, 
         mapTypeId: google.maps.MapTypeId.ROADMAP, 
         scrollwheel: false 
        }; 
        var propertyMap = new google.maps.Map(document.getElementById("property_map"), propertyMapOptions); 
        var propertyMarker = new google.maps.Marker({ 
         position: propertyLocation, 
         map: propertyMap, 
         icon: image 
        }); 
        var panorama = new google.maps.StreetViewPanorama(
         document.getElementById('pano'), { 
         position: propertyLocation, 
         pov: { 
         heading: 34, 
         pitch: 10 
         } 
         }); 
         map.setStreetView(panorama); 

       } 

       window.onload = initialize_property_map(); 
      </script> 
      <script async defer 
    src="https://maps.googleapis.com/maps/api/js?key=IremovedmyAPI&callback=initialize"> 
</script> 

UPDATE:貌似問題是,我有兩個函數調用,我需要幫助,把它變成一個呼叫。

+0

你覺得爲什麼你發佈的街景代碼不能正常工作?它適用於我(使用適當的CSS)。請提供一個[最小,完整,測試和可讀的示例](http://stackoverflow.com/help/mcve),以說明您嘗試解決的問題。 – geocodezip

+0

@geocodezip我沒有說街景代碼不起作用。此代碼可作爲獨立解決方案使用。我想說的是,我需要通過將streetview圖像添加到函數initialize_property_map()來調整第一個代碼,方式是使用屬性位置的標記將Google地圖和街景圖像輸出到它旁邊。對不起,不夠清楚。 – Radi

+0

你嘗試過的是什麼沒有奏效? – geocodezip

回答

1

您的onload函數定義中有錯誤。

window.onload = initialize_property_map(); 

應該

window.onload = initialize_property_map; 

()功能使後必須立即執行的,並作爲函數返回值,因爲該函數不返回執行「的onload」,這是空任何東西。

(和map.setStreetView(panorama);應該propertyMap.setStreetView(panorama);

代碼片段:

function initialize_property_map() { 
 

 
    var propertyMarkerInfo = { 
 
    lat: 42.345573, 
 
    lang: -71.098326, 
 
    icon: "http://maps.google.com/mapfiles/ms/micons/blue.png" 
 
    }; 
 

 
    var url = propertyMarkerInfo.icon; 
 
    var size = new google.maps.Size(42, 57); 
 

 
    var image = { 
 
    url: url, 
 
    size: size, 
 
    scaledSize: new google.maps.Size(42, 57), 
 
    origin: new google.maps.Point(0, 0), 
 
    anchor: new google.maps.Point(21, 56) 
 
    }; 
 

 
    var propertyLocation = new google.maps.LatLng(propertyMarkerInfo.lat, propertyMarkerInfo.lang); 
 
    var propertyMapOptions = { 
 
    center: propertyLocation, 
 
    zoom: 15, 
 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
 
    scrollwheel: false 
 
    }; 
 
    var propertyMap = new google.maps.Map(document.getElementById("property_map"), propertyMapOptions); 
 
    var propertyMarker = new google.maps.Marker({ 
 
    position: propertyLocation, 
 
    map: propertyMap, 
 
    icon: image 
 
    }); 
 
    var panorama = new google.maps.StreetViewPanorama(
 
    document.getElementById('pano'), { 
 
     position: propertyLocation, 
 
     pov: { 
 
     heading: 34, 
 
     pitch: 10 
 
     } 
 
    }); 
 
    propertyMap.setStreetView(panorama); 
 

 
} 
 

 
window.onload = initialize_property_map;
html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
} 
 
#property_map { 
 
    height: 100%; 
 
    width: 50%; 
 
    float: left; 
 
} 
 
#pano { 
 
    height: 100%; 
 
    width: 50%; 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="property_map"></div> 
 
<div id="pano"></div>

+0

謝謝你。這是非常有用的,更重要的是它適用於我。 – Radi