<script type="text/javascript">
var gzoom = 15;
var points = new Array();
var markers = new Array();
var map = new BMap.Map("map"); // 创建地图实例
map.enableScrollWheelZoom();
var myPolygon = null;
var count = 0;
var _lat = parseFloat($("#hidLat").val());
var _lng = parseFloat($("#hidLng").val());
var initpoint = new BMap.Point(_lng, _lat); // 创建点坐标
map.centerAndZoom(initpoint, gzoom); // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.NavigationControl()); //缩放工具
var myIcon = new BMap.Icon("http://www.ihangjing.com/images/marker50.png", new BMap.Size(20, 34), { anchor: new BMap.Size(10, 0) });
marker = new BMap.Marker(initpoint, { icon: myIcon });
map.addOverlay(marker);
//map.addEventListener("click", mapclick);
EventWrapper.addListener(map, "click", mapclick);
//绘制多边形
function drawPolygon() {
if (myPolygon) {
map.removeOverlay(myPolygon);
}
points.length = 0;
//从marksers填充pints数组
for (i = 0; i < markers.length; i++) {
points.push(markers[i].getPosition());
}
// points.push(markers[0].getPosition());
myPolygon = new BMap.Polygon(points, { strokeColor: "red", strokeWeight: 1, strokeOpacity: 1 });
map.addOverlay(myPolygon);
}
function mapclick(target) {
//flag == 0表示点击的是标注
//flag > 0表示点击的是地图
var flag = target.pixel.x;
if (target && flag > 0) {
count++
var myIcon = new BMap.Icon("http://www.ihangjing.com/images/mm_20_red.png", new BMap.Size(14, 22), { anchor: new BMap.Size(7, 22) });
var _marker = new BMap.Marker(target.point, { icon: myIcon });
map.addOverlay(_marker);
markers.push(_marker);
_marker.enableDragging();
_marker.setTitle("point" + count + " lat:" + target.point.lat);
_marker.addEventListener("dragging", function(e) {
drawOverlay();
});
_marker.addEventListener("dragend", function(e) {
drawOverlay();
});
_marker.addEventListener("dragstart", function(e) {
drawOverlay();
});
// Click listener to remove a marker
_marker.addEventListener("click", function() {
var n = 0;
for (n = 0; n < markers.length; n++) {
if (markers[n] == _marker) {
map.removeOverlay(markers[n]);
break;
}
}
// 指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。
// 删除从标n开始的,一个元素
markers.splice(n, 1);
if (markers.length == 0) {
count = 0;
}
else {
count = markers.length;
drawOverlay();
}
});
drawPolygon();
}
}
function drawOverlay() {
drawPolygon();
}
//获取每个点的坐标,以: lat1,lng1|lat2,lng2..保存
function GetPolygon() {
var html = "";
for (var i = 0; i < points.length; i++) {
html += points[i].lat + "," + points[i].lng + "|";
}
var temp = html.replace(/\|$/, "");
$("#hidPolygon").val(temp);
if (html == "") {
alert("请设定配置范围");
return false;
}
return true;
}
//初始化多边形
function initPolygon() {
var hidPolygon = $("#hidPolygon").val();
if (hidPolygon == "") {
return;
}
var oldPolygon = hidPolygon.split('|');
for (var i = 0; i < oldPolygon.length; i++) {
count++;
var latlng = oldPolygon[i].split(',');
var _mypoint = new BMap.Point(latlng[1], latlng[0]);
var myIcon = new BMap.Icon("http://www.ihangjing.com/images/mm_20_red.png", new BMap.Size(14, 22), { anchor: new BMap.Size(7, 22) });
var _marker = new BMap.Marker(_mypoint, { icon: myIcon });
map.addOverlay(_marker);
markers.push(_marker);
_marker.enableDragging();
_marker.setTitle("point" + count + " lat:" + _mypoint.lat);
count++;
addinitmarker(_marker);
}
drawPolygon();
}
function addinitmarker(_marker_init) {
_marker_init.addEventListener("dragging", function(e) {
drawOverlay();
});
_marker_init.addEventListener("dragend", function(e) {
drawOverlay();
});
_marker_init.addEventListener("dragstart", function(e) {
drawOverlay();
});
// Click listener to remove a marker
EventWrapper.addListener(_marker_init, "click", function() {
var n = 0;
for (n = 0; n < markers.length; n++) {
if (markers[n] == _marker_init) {
map.removeOverlay(markers[n]);
break;
}
}
// 指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。
// 删除从标n开始的,一个元素
markers.splice(n, 1);
if (markers.length == 0) {
count = 0;
}
else {
count = markers.length;
drawOverlay();
}
});
}
initPolygon();;
</script>