2013-12-18 76 views
0

我還在學習JavaScript沒有多少職業,這是我的第一篇文章。谷歌地圖v3縮放特定位置

的JavaScript

function initialize() { 

    // Create the map 
    // No need to specify zoom and center as we fit the map further down. 
    var map = new google.maps.Map(document.getElementById("map_canvas"), { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     streetViewControl: false, 

    }); 

    // Create the shared infowindow with two DIV placeholders 
    // One for a text string, the other for the StreetView panorama. 
    var content = document.createElement("DIV"); 
    var title = document.createElement("DIV"); 
    content.appendChild(title); 
    var streetview = document.createElement("DIV"); 
    streetview.style.width = "200px"; 
    streetview.style.height = "200px"; 
    content.appendChild(streetview); 
    var infowindow = new google.maps.InfoWindow({ 
     content: content 
    }); 


    var markers = [{ 
     lat: 35.15074, 
     lng: -89.955992, 
     name: "Bob 1" 
    }, { 
     lat: 35.149425, 
     lng: -89.946595, 
     name: "Bob 2" 
    }, { 
     lat: 35.146687, 
     lng: -89.929837, 
     name: "Bob 3" 
    }, { 
     lat: 35.132264, 
     lng: -89.937197, 
     name: "Bob 4" 
    }]; 

    // Create the markers 
    for (index in markers) addMarker(markers[index]); 

    function addMarker(data) { 
     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(data.lat, data.lng), 
      map: map, 
      title: data.name 
     }); 

     google.maps.event.addListener(marker, "click", function() { 
      openInfoWindow(marker); 
     }); 
    } 

    // Zoom and center the map to fit the markers 
    // This logic could be conbined with the marker creation. 
    // Just keeping it separate for code clarity. 
    var bounds = new google.maps.LatLngBounds(); 
    for (index in markers) { 
     var data = markers[index]; 
     bounds.extend(new google.maps.LatLng(data.lat, data.lng)); 
    } 
    map.fitBounds(bounds); 

    // Handle the DOM ready event to create the StreetView panorama 
    // as it can only be created once the DIV inside the infowindow is loaded in the DOM. 
    var panorama = null; 
    var pin = new google.maps.MVCObject(); 
    google.maps.event.addListenerOnce(infowindow, "domready", function() { 
     panorama = new google.maps.StreetViewPanorama(streetview, { 
      navigationControl: false, 
      enableCloseButton: false, 
      addressControl: false, 
      linksControl: false, 
      visible: true 
     }); 
     panorama.bindTo("position", pin); 
    }); 

    // Set the infowindow content and display it on marker click. 
    // Use a 'pin' MVCObject as the order of the domready and marker click events is not garanteed. 
    function openInfoWindow(marker) { 
     title.innerHTML = marker.getTitle(); 
     pin.set("position", marker.getPosition()); 
     infowindow.open(map, marker); 
    } 
} 

我有4米不同的地方,然後我需要4個網頁添加,如何我知道我想要的縮放的具體位置的瀏覽器。假設我想放大「Bob 1」。 然後,我將網頁重命名爲bob1.html。無論何時我點擊bob1.html網頁將縮小zoom: 15且標記居中地圖

回答

0

除非這是規範的一部分,否則不需要有四個不同的頁面?

要設置的位置和地圖的縮放級別只需撥打:

map.setCenter(yourLatLngOrMarkerPosition); 

,並設置縮放級別:

map.setZoom(yourZoomLevel); 

這些可以在任何一點的實例化後設置地圖也許按鈕點擊或一段時間後?

希望這會有所幫助。

編輯要考慮您的要求(在評論中提到),我會在點擊鏈接後提交相關的網址發佈參數。在每個地圖頁面的初始化函數中,您將需要使用類似於Here(儘管這使用jQuery)並類似地設置地圖選項。

編輯您可以使用php讀取url post參數,然後在Google地圖調用中的適當位置回顯它們。

例如:

map.setZoom(<?php echo $_GET['urlZoomParam'];?>); 

等等

一些一般的PHP/MySQL /谷歌地圖疊加文檔:https://developers.google.com/maps/articles/phpsqlajax_v3https://developers.google.com/maps/articles/phpsqlsearch_v3http://theoryapp.com/online-store-locator-using-php-mysql-and-google-maps/

+0

什麼,我的意思是像Yelp的[點] com網站,只要點擊餐廳,它顯示的位置。 謝謝你的腳本,但我確定它支持,如果我把我的PHP – charmine

+0

請參閱編輯考慮到你提到的情況。 – Swires

+0

這是我需要更多的URL參數研究。 >。< 如果我有任何解決方案,我可以回調從我的PHP文件放大到特定的'var標記' – charmine