【发布时间】:2010-09-14 18:47:21
【问题描述】:
我可以解码点,我只需要弄清楚如何遍历点数组并生成
[
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);
【问题讨论】:
-
你的一堆代码没有被格式化为代码。
-
您已经向我们展示了您的代码以及您希望它做什么。你正在尝试
array.push([new google.maps.LatLng(lat * 1e-5, lng * 1e-5)]);如果你说明你当前的尝试是如何失败的,那将会很有帮助。例如。有错误吗?或者数组出来是空的?还是...? -
这就是我想要制作的 [新 google.maps.LatLng(39.112456,-84.574779), 新 google.maps.LatLng(39.314153,-84.261379), 新 google.maps.LatLng( 39.197099,-84.667579), 新的 google.maps.LatLng(39.16836,-84.479381)];在 polygon_#fips# = new google.maps.Polygon({ 路径:polygon_#fips#Coords, strokeColor: "##FF0000", strokeOpacity: 0.8, strokeWeight: 3, fillColor: "###polyfillcolor#",填充不透明度:0.35 });谢谢
标签: javascript arrays google-maps-api-3