Javascript 多边形数组在Google map API中不起作用
我有一个在GoogleMapAPI中从数组中绘制多边形的代码,但它不起作用Javascript 多边形数组在Google map API中不起作用,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我有一个在GoogleMapAPI中从数组中绘制多边形的代码,但它不起作用 <!DOCTYPE html> <html> <head> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false" type="text/javascript"></script> <script src="http://code.j
<!DOCTYPE html>
<html>
<head>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
function drawPoly(multipolygonWKT) {
var polylines = [];
var toReturn = [];
var formattedValues = multipolygonWKT.replace("))", "");
formattedValues = formattedValues.replace("((", "");
var linesCoords = formattedValues.split("),(");
for (i = 0; i < linesCoords.length; i++) {
polylines[i] = [];
var singleLine = linesCoords[i].split(",");
for (j = 0; j < singleLine.length; j++) {
var coordinates = singleLine[j].split(" ");
var latlng = new google.maps.LatLng(parseFloat(coordinates[1]), parseFloat(coordinates[0]));
polylines[i].push(latlng);
}
}
//by now you should have the polylines array filled with arrays that hold the coordinates of the polylines of the multipolyline
//lets loop thru this array
for (k = 0; k < polylines.length; k++) {
var line = polylines[k];
if (k > -1) {
toReturn.push(
new google.maps.Polygon({
paths: line,
strokeColor: 'red',
strokeOpacity: 1,
strokeWeight: 2,
zIndex: 1
})
);
}
}
return toReturn;
}
$(document).ready(function () {
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(24.886436490787712, 70.2685546875),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
debugger;
var mps = ["MULTIPOLYGON(((25 80.1,18.4 66.1,32.3 64.7,25.7 80.1)),(25.1 80.5,18.8 66.1,32.9 64.2,25.1 80.5))"];
for (i in mps) {
var lines = drawPoly(mps[i].replace("MULTIPOLYGON", ""));
for (k = 0; k < lines.length; k++) {
lines[k].setMap(map);
google.maps.event.addListener(lines[k], 'mouseover', function () {
this.setOptions({ fillColor: "red" });
});
google.maps.event.addListener(lines[k], 'mouseout', function () {
this.setOptions({ fillColor: "white" });
});
}
lines.length = 0;
}
});
</script>
</head>
<body>
<div style="height:1000px;width:1200px;" id="map"></div>
</body>
</html>
函数drawPoly(multipolygonWKT){
var多段线=[];
var toReturn=[];
var formattedValues=multipolygonWKT.replace(“)”,“);
formattedValues=formattedValues.replace((“,”);
var linesCoords=formattedValues.split(“”),(“”;
对于(i=0;i-1){
推(
新google.maps.Polygon({
路径:行,
strokeColor:'红色',
频闪不透明度:1,
冲程重量:2,
zIndex:1
})
);
}
}
回归回归;
}
$(文档).ready(函数(){
var map=new google.maps.map(document.getElementById(“map”){
中心:新google.maps.LatLng(24.886436490787712,70.2685546875),
缩放:5,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
调试器;
var mps=[“多多边形((25.80.1,18.4 66.1,32.3 64.7,25.7 80.1)),(25.1 80.5,18.8 66.1,32.9 64.2,25.1 80.5));
对于(我在mps中){
var lines=drawPoly(mps[i]。替换(“多多边形”);
对于(k=0;k
这个代码在这里通过这个lat lon工作
但在我的经纬度下不起作用。在WKT表示中,纬度和经度颠倒。这应该是“经纬度”: 更改此项:
var mps = ["MULTIPOLYGON(((25 80.1,18.4 66.1,32.3 64.7,25.7 80.1)),(25.1 80.5,18.8 66.1,32.9 64.2,25.1 80.5))"];
致:
您的示例中的WKT有额外的大括号,这就是为什么对某些LATLNGS的解析部分失败的原因。如果您比“不工作”更具体一些,这会有所帮助。请告诉我们哪里出了问题。
var mps = ["MULTIPOLYGON(((80.1 25,66.1 18.4,64.7 32.3,80.1 25.7),(80.5 25.1,66.1 18.8,64.2 32.9,80.5 25.1)))"];