2012-05-04 57 views
2

我是新來的谷歌地圖和API,試圖讓地圖平移到一個點擊區域。我沒有很好的時間在API參考中找到我需要的東西,並且完全不知道如何去做這件事,所以我沒有太多的東西,但是到目前爲止,這裏是我的。LatLng從kml文件中的多邊形的邊界?

我想使它點擊任何區域都會平移並放大顯示大部分區域,我相信這是panToBounds的意圖。

多數功能將點擊文本名稱和具有地圖加載顯示正確的位置,而不是到處點擊地圖上都會現身

function initialize_neighbourhoodmap(neighbourhood_name) { 
    var latlng = new google.maps.LatLng(42.949442,-81.228125); 

    var zoom = 11; 
    var neighbourhood_center = get_neighbourhood_center(); 

    var myOptions = { 
     zoom: zoom, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    map = new google.maps.Map(document.getElementById("neighbourhood_map"), 
     myOptions); 

    var neighbourhoods = new google.maps.KmlLayer('http://maps.google.com/maps/ms?authuser=0&ie=UTF8&hl=en&oe=UTF8&vps=3&msa=0&output=kml&msid=217366496682144933685.0004bf3be50d3cd7ad1c2', {suppressInfoWindows: true, preserveViewport:true}); 
    neighbourhoods.setMap(map); 

    google.maps.event.addListener(neighbourhoods, 'click', function(KmlFeatureData) { 
     var neighbourhood_name = KmlFeatureData.featureData.name; 
    load_neighbourhood(neighbourhood_name, neighbourhoods); 
    window.location = "#neighbourhood-neighbourhood "+neighbourhood_name; 
    }); 

    if(typeof neighbourhood_name !== 'undefined'){ 
     load_neighbourhood(neighbourhood_name, neighbourhood_center); 
    } 
} 

function load_neighbourhood (neighbourhood_name, neighbourhoods) { 
    var neighbourhoodbounds = nonexistentgetboundsfunction(neighbourhood_name); 
    map.panToBounds(neighbourhood_center[neighbourhood_name][0]); 
    $('#neighbourhood h2').html('neighbourhood '+neighbourhood_name); 
} 

回答

2

當然,你希望其他功能? UI在我看來變得很尷尬。那麼,這裏是:http://jsfiddle.net/g343k/3/

我遇到了一個奇怪的「bug」,或者有些人可能會調用與KML多邊形關聯的「feature」。點擊某個區域時,地圖會移至該區域的中心;然而,當點擊外部planning_district區域時,地圖會移到框的中心,而不是點擊的位置(Sean Mickey在FireFox 12中進行測試,並且可以點擊)。我不能比細分規劃區爲幾十小盒想出一個辦法解決這個其他:(現在我寫的代碼忽略點擊該規劃區。

google.maps.event.addListener(neighbourhoods, 'click', function(KmlFeatureData) { 
     var neighbourhood_name = KmlFeatureData.featureData.name; 
    load_neighbourhood(neighbourhood_name, neighbourhoods); 
    window.location = "#neighbourhood-neighbourhood "+neighbourhood_name; 
    // ADDED 
    // Consider what to do when this outer area is clicked 
    if(KmlFeatureData.featureData.name!="planning_districts_2008") { 
     map.panTo(KmlFeatureData.latLng); 
    } 

    }); 

    // LEFT OUT 
    //if(typeof neighbourhood_name !== 'undefined'){ 
    // load_neighbourhood(neighbourhood_name, neighbourhood_center); 
    //} 

    // ADDED 
    google.maps.event.addListener(map, 'click', function(event) { 
     map.panTo(event.latLng); 
    }); 
+0

我不認爲我看看你在描述什麼;它似乎正在按照問題描述的方式工作 –

+0

@SeanMickey我沒有工作的部分是在大輪廓形狀外面單擊(例如:右下角的Lockwood Park)。地圖不會居中於點擊點,而是位於輪廓區域的中心。 –

+0

這不是我所看到的。點擊的點被移動到中心位置,無論我是在我們的外部的kml部分。我可以看到光標切換到kml區域的指針,它仍然是該區域的默認區域光標的位置,kml或不是,我點擊的任何點都會移動到中心位置。我在FF 12中運行。 –