2010-09-14 3 views
0

можно декодировать точки, мне просто нужно, чтобы выяснить, как цикл через массив точек и производитьGOOGLEMAPS 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

+0

Вы показали нам свой код и то, что вы хотите. Вы пытаетесь 'array.push ([new google.maps.LatLng (lat * 1e-5, lng * 1e-5)]);' Было бы полезно, если бы вы указали, как происходит ваша текущая попытка. Например. есть ли ошибка? или массив выходит пустым? или...? – LarsH

+0

Код доступен на http://pastebin.com/Zf6hi4AB – cfEngineers

ответ

1

OK Я думаю, что вижу, что вы говорите. Попробуйте изменить

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)); 

Что вы делаете, добавляя новый массив Google. maps.LatLng до конца вашего массива, так что вы ende d с массивом массивов google.maps.LatLng. С этим изменением вы должны получить массив google.maps.LatLng, который вам нужен.

+0

В firebug не сообщалось об ошибке, просто никаких полигонов на карте, я протестировал закодированные точки в v2, и он отлично работал. Полный код ColdFusion здесь http://pastebin.com/FE08TzFN Спасибо за помощь. – cfEngineers

+0

Исходная функция только что созданных точек (39.314153, -84.261379) в массиве bu ti должна выводить новый файл google.maps.LatLng (39.314153, -84.261379) в массиве, который не уверен, как это сделать, я думаю, вероятно, использовать оригинальную функцию и каким-то образом повторить через возвращенный массив, чтобы создать новый массив с новым google.maps.LatLng (точки [0], точки [1]) в нем, то есть где я застрял. – cfEngineers

+0

@ cfEngineers: только что-то увидел. См. Мой обновленный ответ ... – LarsH

Смежные вопросы