2010-09-14 185 views
0

我可以解碼的分,我只需要通過點陣列弄清楚如何循環併產生可谷歌地圖API V3的多邊形

[ 
new google.maps.LatLng(39.112456,-84.574779), 
new google.maps.LatLng(39.314153,-84.261379), 
new google.maps.LatLng(39.197099,-84.667579), 
new google.maps.LatLng(39.16836,-84.479381) 
]; 

代碼在http://pastebin.com/Zf6hi4AB

任何幫助表示讚賞。

<!--- this is the original function ---> 
function decodeLine (encoded) { 
    var len = encoded.length; 
    var index = 0; 
    var array = []; 
    var lat = 0; 
    var lng = 0; 

    while (index < len) { 
    var b; 
    var shift = 0; 
    var result = 0; 
    do { 
     b = encoded.charCodeAt(index++) - 63; 
     result |= (b & 0x1f) << shift; 
     shift += 5; 
    } while (b >= 0x20); 
    var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1)); 
    lat += dlat; 

    shift = 0; 
    result = 0; 
    do { 
     b = encoded.charCodeAt(index++) - 63; 
     result |= (b & 0x1f) << shift; 
     shift += 5; 
    } while (b >= 0x20); 
    var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1)); 
    lng += dlng; 

    array.push([lat * 1e-5, lng * 1e-5]); 
    } 

    return array; 




<!--- this is what i am trying ---> 
function decodeLine(encoded) { 
    var len = encoded.length; 
    var index = 0; 
    var array = []; 
    var lat = 0; 
    var lng = 0; 

    while (index < len) { 
    var b; 
    var shift = 0; 
    var result = 0; 
    do { 
     b = encoded.charCodeAt(index++) - 63; 
     result |= (b & 0x1f) << shift; 
     shift += 5; 
    } while (b >= 0x20); 
    var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1)); 
    lat += dlat; 

    shift = 0; 
    result = 0; 
    do { 
     b = encoded.charCodeAt(index++) - 63; 
     result |= (b & 0x1f) << shift; 
     shift += 5; 
    } while (b >= 0x20); 
    var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1)); 
    lng += dlng; 

    array.push([new google.maps.LatLng(lat * 1e-5, lng * 1e-5)]); 
    } 

    return array; 
} 




<!--- this is how i trying to use it ---> 
var polygon_#fips#Coords = []; 
    var polygon_#fips#Coords = [decodeLine('#points#')]; 
    var polygon_#fips#; 


    polygon_#fips# = new google.maps.Polygon({ 
     paths: polygon_#fips#Coords, 
     strokeColor: "##FF0000", 
     strokeOpacity: 0.8, 
     strokeWeight: 3, 
     fillColor: "###polyfillcolor#", 
     fillOpacity: 0.35 
    }); 

    polygon_#fips#.setMap(map); 

<!--- this is the orinigal use ---> 
var polygon_#fips#Coords = []; 
    var polygon_#fips#Coords = [ 
      new google.maps.LatLng(39.112456,-84.574779), 
      new google.maps.LatLng(39.314153,-84.261379), 
      new google.maps.LatLng(39.197099,-84.667579), 
      new google.maps.LatLng(39.16836,-84.479381) 
    ]; 

    var polygon_#fips#; 


    polygon_#fips# = new google.maps.Polygon({ 
     paths: polygon_#fips#Coords, 
     strokeColor: "##FF0000", 
     strokeOpacity: 0.8, 
     strokeWeight: 3, 
     fillColor: "###polyfillcolor#", 
     fillOpacity: 0.35 
    }); 

    polygon_#fips#.setMap(map); 
+0

你的一堆代碼沒有被格式化爲代碼。 – LarsH 2010-09-14 18:49:04

+0

您向我們展示了您的代碼以及您希望它執行的操作。你正在嘗試'array.push([new google.maps.LatLng(lat * 1e-5,lng * 1e-5)]);'如果你說明你當前的嘗試失敗的方式將會很有幫助。例如。有沒有錯誤?或陣列空出來?要麼...? – LarsH 2010-09-14 18:52:04

+0

Code at http://pastebin.com/Zf6hi4AB – cfEngineers 2010-09-14 19:06:03

回答

1

好的我想我明白你在說什麼了。嘗試改變

var polygon_#fips#Coords = [decodeLine('#points#')]; 

var polygon_#fips#Coords = decodeLine('#points#'); 

同樣在decodeLine()變化

array.push([new google.maps.LatLng(lat * 1e-5, lng * 1e-5)]); 

array.push(new google.maps.LatLng(lat * 1e-5, lng * 1e-5)); 

什麼你做的是加入谷歌的新數組。 maps.LatLng到你的數組的末尾,所以你結束用google.maps.LatLng數組構成一個數組。 有了這個改變,你應該得到一個google.maps.LatLng數組,這是你需要的。

+0

在螢火蟲沒有錯誤報告,只是在地圖上沒有多邊形,我已經在V2測試編碼點,它工作正常。完整的ColdFusion代碼http://pastebin.com/FE08TzFN感謝您的幫助。 – cfEngineers 2010-09-14 19:40:59

+0

原始函數剛剛在數組中創建了點(39.314153,-84.261379),需要在數組中輸出新的google.maps.LatLng(39.314153,-84.261379)不知道該怎麼做,我想可能使用原始函數並以某種方式通過返回的數組重新創建一個新的數組,其中包含新的google.maps.LatLng(points [0],points [1]),這就是我卡住的地方。 – cfEngineers 2010-09-14 19:44:20

+0

@cfEngineers:剛看到別的東西。看到我更新的答案... – LarsH 2010-09-14 19:50:34