【发布时间】:2015-12-01 13:58:12
【问题描述】:
我制作了下面的 HTML+javascript 程序来提供特定格式的输出, 它首先从 "location" 数组中提取数组值并将它们放入 "a" 数组中,然后 for 循环以纬度和经度格式生成输出,
<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var location =[33.53625,-111.92674,33.51049,-111.96279,33.50161,-111.90374];
var a =[{lat:location[0] , lng: location[1]},{lat: location[2], lng: location[3]},{lat: location[4], lng: location[5]}];
var txt = "";
var n;
var h;
for (x in a) {
n=2*parseInt(x);
h=(2*parseInt(x))+1;
txt += "{lat: "+location[n]+" , lng:"+location[h]+"},"+"\n";
}
document.getElementById("demo").innerHTML = String(txt);
}
</script>
</body>
</html>
当我按下按钮时,输出是,
{lat: 33.53625 , lng:-111.92674}, {lat: 33.51049 , lng:-111.96279}, {lat: 33.50161 , lng:-111.90374},
现在,上面的输出存储在 var txt 中,所以,我把 "txt" 放在了 triangleCoords 的下面的 google api 程序中,
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Polygon</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
// This example creates a simple polygon representing the Bermuda Triangle.
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: {lat: 33.53625, lng: -111.92674},
mapTypeId: google.maps.MapTypeId.TERRAIN
});
var location =[33.53625,-111.92674,33.51049,-111.96279,33.50161,-111.90374];
var a =[{lat:location[0] , lng: location[1]},{lat: location[2], lng: location[3]},{lat: location[4], lng: location[5]}];
var txt = "";
var n;
var h;
for (x in a) {
n=2*parseInt(x);
h=(2*parseInt(x))+1;
txt += "{lat: "+location[n]+" , lng:"+location[h]+"},"+"\n";
}
var triangleCoords = [
txt
];
// Construct the polygon.
var bermudaTriangle = new google.maps.Polygon({
paths: triangleCoords,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
bermudaTriangle.setMap(map);
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?signed_in=true&callback=initMap"></script>
</body>
</html>
但我没有在地图上获得多边形,但如果我将 txt 替换为其独立输出
,我就能获得多边形输出var triangleCoords = [
{lat: 33.53625 , lng:-111.92674}, {lat: 33.51049 , lng:-111.96279}, {lat: 33.50161 , lng:-111.90374},
];
我应该将 txt 转换成其他格式吗?还是我遗漏了什么?
【问题讨论】:
-
你需要创建一个对象数组,而不是字符串。
标签: javascript html google-maps type-conversion