2013-11-02 65 views
0

對於我正在使用Google地圖向網絡添加多義線以顯示路線的網站。一些路線由多條腿(階段)組成,我試圖根據請求添加多段線。所以只有當用戶選擇顯示一條腿時,它纔會繪製折線。用戶也可以選擇完全不同的路線,並且這組新的多段線也應該在地圖上繪製。編輯現有的Google地圖元素

我的問題是,我似乎無法弄清楚或找到如何選擇現有的地圖。我開始了使用下面的代碼創建地圖:

qMap = new google.maps.Map(document.getElementById(mP.target), mapOptions);

mP.target包含與畫布的字符串idmapOptions只是一些選擇對象,沒什麼特別的。

所以我做所有類型的東西qMap,如添加標記,繪製多段線等。這不應該只在地圖啓動時完成,而且當用戶想要添加的東西。 qMap不是一個全局變量,我寧願它不是一個全局變量。

我試過qMap = google.maps.Map(document.getElementById(mP.target))和其他類似的方法。沒有成功。我希望你可以幫我找到一個沒有全局變量的方法!謝謝!

回答

0

有幾件事你可以嘗試。

1)將代碼包裝在一個立即調用的函數中。這樣,任何變量都包含在函數的作用域中,並且不會轉義以污染我認爲是您主要關心的全局變量空間。

(function() { 

    var mapGlobal = new google.maps.Map(target, options); 

    function thatDoesSomething(){ 
    // do something with mapGlobal 
    } 

}()); 

2)使用一個靜態對象,它可能很方便組織您的代碼。

var Map = { 

    map: new google.maps.Map(target, options), 

    thatDoesSomething: function() { 
    // do something with this.map 
    } 

}; 

3)或合併它們。

(function() { 

    var Map = { 

    map: new google.maps.Map(target, options), 

    thatDoesSomething: function() { 
     // do something with this.map 
    } 

    }; 

}()); 
+0

謝謝,我使用了選項2,它的工作原理與我想要的一樣。唯一的事情是我必須爲每張地圖設置一個「對象」。謝謝! – LuudJacobs