我是google maps api的新手,我有一些多边形和多边形。我想在Google Maps API中同时显示(多边形和折线)。我尝试了一些东西,但无法同时显示多边形和折线,仅显示多边形,如何同时显示多边形和折线。我有一个Json,json具有源多边形或折线,我在这里显示基于源的多边形。对不起我的英语不好。
希望有人可以让我知道我失败的地方。这是我的代码。演示版
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry,places&sensor=true"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div style="height: 450px;" id="map-canvas"></div>
<script>
$(function(){
initialize();
});
function initialize() {
var centerPoint = new google.maps.LatLng(13.09084815771412,80.26878878474236);
var mapOptions = {
zoom: 14,
center: centerPoint,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true,
mapTypeControl: false
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var arr = new Array();
var polygons = [];
var polyline = [];
var bounds = new google.maps.LatLngBounds();
var coordinates = [];
var marker = new google.maps.Marker;
var getBounds;
var data = '[{"name":"Arumbakkam","id":"1620","source":"polygon","latlng":[{"lat":"13.080648730311745","lng":"80.2668146789074"},{"lat":"13.081819177841483","lng":"80.27453944087029"},{"lat":"13.086208306590859","lng":"80.27172848582268"},{"lat":"13.09084815771412","lng":"80.26878878474236"},{"lat":"","lng":null}]},{"name":"Chetpet","id":"1621","source":"polyline","latlng":[{"lat":"13.119271","lng":"80.095053"},{"lat":"13.117557","lng":"80.095203"},{"lat":"13.116408","lng":"80.101683"}]}]';
var jsonData = JSON.parse(data);
for (var i = 0; i < jsonData.length; i++) {
var polName = jsonData[i].name;
var id = jsonData[i].id;
var latArr = jsonData[i].latlng;
var source_d = jsonData[i].source;
arr = [];
for (j = 0; j < latArr.length; j++) {
var lat = latArr[j].lat;
var lng = latArr[j].lng;
arr.push(new google.maps.LatLng(parseFloat(lat), parseFloat(lng)));
bounds.extend(arr[arr.length - 1]);
}
if(source_d == "polygon"){
polygons.push(new google.maps.Polygon({
auto_id: i,
id: id,
name: polName,
paths: arr,
Source: source_d,
strokeOpacity: 0.8,
strokeWeight: 2,
fillOpacity: 0.35,
zIndex: 10
}));
console.log(id+" polygons name="+polName);
polygons[polygons.length - 1].setMap(map);
}else if (source_d == "polyline") {
polyline.push(new google.maps.Polyline({
auto_id: i,
id: id,
name: polName,
paths: arr,
Source: source_d,
strokeOpacity: 0.8,
strokeWeight: 2,
zIndex: 11
}));
polyline[polyline.length - 1].setMap(map);
console.log(id+" polyline name="+polName);
}
}
}
</script>
一个google.maps.PolylineOptions对象不具有一个paths
特性,那就是只对一个google.maps.PolygonOptions对象。
改变:
polyline.push(new google.maps.Polyline({
auto_id: i,
id: id,
name: polName,
paths: arr,
Source: source_d,
strokeOpacity: 0.8,
strokeWeight: 2,
zIndex: 11
}));
至:
polyline.push(new google.maps.Polyline({
auto_id: i,
id: id,
name: polName,
path: arr,
Source: source_d,
strokeOpacity: 0.8,
strokeWeight: 2,
zIndex: 11
}));
代码段:
$(function() {
initialize();
});
function initialize() {
var centerPoint = new google.maps.LatLng(13.09084815771412, 80.26878878474236);
var mapOptions = {
zoom: 14,
center: centerPoint,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true,
mapTypeControl: false
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var arr = new Array();
var polygons = [];
var polyline = [];
var bounds = new google.maps.LatLngBounds();
var coordinates = [];
var marker = new google.maps.Marker;
var getBounds;
var data = '[{"name":"Arumbakkam","id":"1620","source":"polygon","latlng":[{"lat":"13.080648730311745","lng":"80.2668146789074"},{"lat":"13.081819177841483","lng":"80.27453944087029"},{"lat":"13.086208306590859","lng":"80.27172848582268"},{"lat":"13.09084815771412","lng":"80.26878878474236"}]},{"name":"Chetpet","id":"1621","source":"polyline","latlng":[{"lat":"13.119271","lng":"80.095053"},{"lat":"13.117557","lng":"80.095203"},{"lat":"13.116408","lng":"80.101683"}]}]';
var jsonData = JSON.parse(data);
for (var i = 0; i < jsonData.length; i++) {
var polName = jsonData[i].name;
var id = jsonData[i].id;
var latArr = jsonData[i].latlng;
var source_d = jsonData[i].source;
arr = [];
for (j = 0; j < latArr.length; j++) {
var lat = latArr[j].lat;
var lng = latArr[j].lng;
arr.push(new google.maps.LatLng(parseFloat(lat), parseFloat(lng)));
bounds.extend(arr[arr.length - 1]);
}
if (source_d == "polygon") {
polygons.push(new google.maps.Polygon({
auto_id: i,
id: id,
name: polName,
paths: arr,
Source: source_d,
strokeOpacity: 0.8,
strokeWeight: 2,
fillOpacity: 0.35,
zIndex: 10
}));
console.log(id + " polygons name=" + polName);
polygons[polygons.length - 1].setMap(map);
} else if (source_d == "polyline") {
polyline.push(new google.maps.Polyline({
auto_id: i,
id: id,
name: polName,
path: arr,
Source: source_d,
strokeOpacity: 0.8,
strokeWeight: 2,
zIndex: 11
}));
polyline[polyline.length - 1].setMap(map);
console.log(id + " polyline name=" + polName);
}
}
map.fitBounds(bounds);
}
html,
body,
#map-canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map-canvas"></div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句