`
jinxhj2003
  • 浏览: 149052 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

地图画线

阅读更多
<%@page language="java" contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%@ taglib prefix="c" uri="core"%>
<%@page import="com.jltour.common.framework.Java91Config"%>
<%@ page import="com.jltour.common.constant.OptionType"%>
<%@ page import="com.jltour.common.manager.OptionManager"%>
<%@ taglib uri="java91" prefix="java91" %>
<html>
<head>
<title>google地图操作</title>
<script language='javascript' charset='utf-8' src='/js/framework.js'></script>
<script language='javascript' charset='utf-8' src='/js/area.js'></script>
<script language='javascript' charset='utf-8' src='/js/areafun.js'></script>
<script language='javascript' charset='utf-8' src='/js/city.js'></script>
<script language='javascript' charset='utf-8' src='/js/Validation.js'></script>
<script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=<%=Java91Config.getGoogleMapKey() %>'></script>
<link rel="stylesheet" type="text/css" href="/style/google.css"/>
<script type="text/javascript">
var pointArray  = new Array();
GMarker.prototype.setIndex=function(index)
{
this.index=index;
}
var map;//地图
var polygon;//线对象
var markers=[];//修建的markers
var crenterMarker;//当前的中心点对象
var isCenter =false;//是否是中心点
var myIcon=new GIcon(G_DEFAULT_ICON,"http://www.google.com/mapfiles/marker.png");//图像
function createMarker(point){
     var marker=new GMarker(point,{icon:myIcon,draggable:true,bouncy:true});
     var index=markers.length;
      //document.getElementById("jingwei").innerHTML = document.getElementById("jingwei").innerHTML+"|"+index+":("+point.y + "," + point.x+")";
     GEvent.addListener(marker,'dblclick',function(){//双击删除
     deleteMarker(marker);
     });
     GEvent.addListener(marker,'dragstart',function(){//鼠标按下
        marker.setImage("http://www.google.com/mapfiles/dd-start.png");
     });
     GEvent.addListener(marker,'dragend',function(){//鼠标防开
      marker.setImage("http://www.google.com/mapfiles/marker.png");
     });
     GEvent.addListener(marker,'drag',function(){//重画
      redrawPolygon();
      changMarkerTable(index);
     });
     marker.setIndex(index);
     markers[index]=marker;
     map.addOverlay(marker);
     redrawPolygon();
     initTemplate(index,point.x,point.y);//初始化添加模版
     addRow(index);//在表中添加行
}

function createCenterMarker(point){
if(point){
if(crenterMarker){
map.removeOverlay(crenterMarker);
var marker = new GMarker(point);
map.addOverlay(marker);
crenterMarker = marker;
changCenterMarkerTable(point);//修改值
addPolygon();
}else{
var marker = new GMarker(point);
map.addOverlay(marker);
crenterMarker = marker;
initTemplate(88,point.x,point.y)
addRow(88);//在表中添加行
addPolygon();
}
}

}

function deleteMarker(marker){
    if(!confirm("您确认删除吗?"))return;
    var index=marker.index;
    map.removeOverlay(marker);
    deleteMarkerTable(index);
    for(var i=index;i<markers.length-1;i++){
     markers[i+1].setIndex(i);
     markers[i]=markers[i+1];
    }
    markers.length=markers.length-1;
    redrawPolygon();
}
function load(){
     if(GBrowserIsCompatible()){
     map=new GMap2(document.getElementById("map"));
     map.addControl(new GMapTypeControl());//地图类型 地图 卫星
map.addControl(new GLargeMapControl());//放大缩小
map.addControl(new GScaleControl());//比例尺
map.enableScrollWheelZoom();  //设置地图可以由鼠标滚轮控制缩放(默认是不会)。
     var centerPoint=new GLatLng(22.542169,114.123402);
     map.setCenter(centerPoint,16);
     GEvent.addListener(map,'click',function(overlay,point){
      if(isCenter){
      if(overlay){
      map.removeOverlay(overlay);
      }else if(point){
      createCenterMarker(point);
      }
      }else{
      if(point){
      createMarker(point);
      }
      }
     });
  }
}
function addPolygon(){
    var points=[];
    for(var i=0;i<markers.length;i++){
      points[i]=markers[i].getPoint();
    }
    if(markers.length>0){
    points[markers.length+1]=markers[0].getPoint();
    }
    polygon=new GPolygon(points,"#ff0000",2, 0.3, "#6666FF", 0.4);//顏色,線條的粗細,顏色透明度
    map.addOverlay(polygon);
}
function removePolygon(){
    polygon.remove();
    polygon=null;
}
function redrawPolygon(){//重畫
    if(polygon){
      removePolygon();
    }
    addPolygon();
}

function showAddress(value,cityName){
if(isNullValue(value)){
    return false;
    }
    if(isNullValue(cityName)){
    alert("城市不能为空");
    return false;
    }
    var  adressInput =cityName+"市 ";
    map.geocoder = new GClientGeocoder();
    if (map.geocoder) {
    map.geocoder.getLatLng(adressInput,function(point){
            if (!point) {
                alert("不能解析: " + adress);
            } else {
              map.setCenter(point,14);
              var baseIconQuery =new GIcon(G_DEFAULT_ICON,"http://www.google.com/mapfiles/marker.png");//图像
              var marker = new GMarker(point,{icon: baseIconQuery,draggable: true});
              map.addOverlay(marker);
            }
          });
      }
}


</script>
</head>
<body onload="load()" onunload="GUnload()">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="searchtable">
<tr>
<td><table width="100%">
<tr height="50" >
<td width="80px" align="right">常用城市:</td>
<td  colspan="5" >
<!--深圳--><input type='radio'  id="70002" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="70002"  ><label for="70002" style="CURSOR:pointer">深圳</label>
<!--香港--><input type='radio'  id="30000898" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="30000898"  ><label for="30000898" style="CURSOR:pointer">香港</label>
<!--澳门--><input type='radio'  id="70139" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="70139"  ><label for="70139" style="CURSOR:pointer">澳门</label>
<!--广州--><input type='radio'  id="70011" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="70011"  ><label for="70011" style="CURSOR:pointer">广州</label>
<!--三亚--><input type='radio'  id="70030" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="70030"  ><label for="70030" style="CURSOR:pointer">三亚</label>
<!--北京--><input type='radio'  id="70082" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="70082"  ><label for="70082" style="CURSOR:pointer">北京</label>
<!--上海--><input type='radio'  id="70058" style="CURSOR:pointer;" onclick="cityChangAll(this.value);" name="commoncity" value="70058"  ><label for="70058" style="CURSOR:pointer">上海</label>
&#160;&#160;&#160;&#160;&#160;
<INPUT TYPE="hidden" id="city_id" value=""  name="hotelQueryPara.city">
<INPUT size="10" TYPE="text" style="vertical-align:middle;color:#697268;" id="city_name" value="" onKeyDown="return suggest.display(this,event);" onClick="suggest.display(this,event);">
&#160;&#160;&#160;
行政区:<select id=zone name="hotelQueryPara.zone" onchange="javaScript:zoneChange(this.value);mapZoneChange(this);" style="width:80px" ></select> 
商业区:<select id=bizzone name="hotelQueryPara.bizzone"  style="width:80px" onchange="mapBizzChange(this);"></select>
</td>
</tr>
<tr height="50" >
<td width="80px" align="right">设置中心点:</td>
<td  colspan="5" >
<input type='radio' id='datetyped' style="CURSOR:pointer;" name="iscenter" value="1"   onclick="setIsCerter(this.value);"/><label for='datetyped' style='CURSOR:pointer;color:#697268'>是</label>
<input type='radio' id='datetypem' style="CURSOR:pointer;" name="iscenter" value="8"    onclick="setIsCerter(this.value);"/><label for='datetypem' style='CURSOR:pointer;color:#697268'>否</label>
</td>
</tr>
<tr>
<td colspan="6" align="right">
<input type="button"  value="查 询" onclick="submit2();" style="CURSOR:pointer;" >&#160;
<input  type="reset" value="重 置" style="CURSOR:pointer;" >&#160;
<input  type="button" value="隐 藏" onclick="queryFormDiv();" style="CURSOR:pointer;"  >  
</td>
</tr>
</table></td>
</tr>
<tr>
<td ><table width="100%" class="searchtableMap" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td width="800" style="border-right:1px #52A6C6 solid;">
<table width="100%">
<div id="map" style="width: 800px; height: 600px"></div>
</table>
</td>
<td valign="top">
<form name="editForm" action="common/commonAction!listLocalzonexySave.action" method="post" target="editIFrame">
<table width="100%" class="contentTAble" id="contentTable">
<tr>
<th width="40">序号</th>
<th width="30">类型</th>
<th width="130">经度</th>
<th width="130">纬度</th>
<th width="40">中心点

<input type="hidden" value="" name="countryid" />
<input type="hidden" value="" name="stateid" />
<input type="hidden" value="" name="cityid" />
<input type="hidden" value="1" name="types" />
<input type="hidden" value="" name="selectzoneid" />

<input type="hidden" value="" name="updateid" />
<input type="hidden" value="" name="deleteid" />
</th>
</tr>
<tr>
   <th colspan="5" style="text-align:right;">
   <input type="button" value="绘图完成" onClick="setMapLine(1);">   
<input type="button" value="保 存" onClick="submit2()">   
   </th>
</tr>
</table>
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table id="add_template"  style="display:none">
<tr>
<td width="30"><input type="text" style="width:100%;" value="" name="localzonexy.numbers" /></td>
</tr>
<tr>
<td><select  name="localzonexy.type" ><%=OptionManager.generateOptionString(OptionType.localzonexytype)%></select></td>
</tr>
<tr>
<td><input style="width:100%;" type="text" value="" name="localzonexy.jingdu" /></td>
</tr>
<tr>
<td><input style="width:100%;" type="text" value="" name="localzonexy.weidu" /></td>
</tr>
<tr>
<td><select onchange="setEdit(this);" name="localzonexy.iscenter" ><java91:genoption type="<%=OptionType.YesOrNo%>" code="8" /> </select></td>
</tr>
</table>

<table style="display: none">
<tr>
<td>
<iframe name="editIFrame" width="100%" height="800" border="0" frameborder="0"></iframe>
</td>
</tr>
</table>
</body>
<script type="text/javascript">

var mapLine=8;

function setMapLine(values){
mapLine = values;
}

function submit2(){

var table = id("contentTable");
if(table){
if(table.rows.length<=2){
alert("请绘图");
return;
}
}
if(validateByform("editForm")){
if(mapLine =={
alert("请点击确认绘图完成");
return;
}

var county= idname("countryid").value;
var statu = idname("stateid").value;
var city = idname("cityid").value;
var selectzone =idname("selectzoneid").value;
var types=idname("types").value;
if(isEmpty(county) || isEmpty(statu) || isEmpty(city) || isEmpty(types) || isEmpty(selectzone)){
alert(county+"|"+statu+"|"+city+"|"+selectzone+"|"+types);
alert("请选择诚市或区域");
return;
}

var iframe=id("editIFrame");
iframe.detachEvent("onload", getIframResult); //先移除事件         
if (iframe.attachEvent){
iframe.attachEvent("onload", getIframResult);
} else {
iframe.onload = getIframResult;
}
mapLine=8;
editForm.submit();
}
}
function getIframResult(){
}

var suggest = new city_all();

var cityObj=id("city");
var zoneObj=id("zone");
var bizzoneObj=id("bizzone");

var cityValue="${hotel.city}";
var zoneValue="${hotel.zone}";
var bizzoneValue="${hotel.bizzone}";

function cityChange(a){
cityChangeHandle(a,zoneObj);
cityChangeHandle2(a,bizzoneObj);
id("city_id").value=a;

var stateid = getStateByCityId(a);
    var countryid = getCountryByStateId(stateid);
    setvalue("cityid",a);
    setvalue("countryid",countryid);
    setvalue("stateid",stateid);
var cityNames = getCityNameByCityId(a);
showAddress(cityNames,cityNames);   
}
//城市改变下拉也改变
function cityChangAll(a){
cityChangeHandle(a,zoneObj);
id("city_id").value=a;
name("cityid").value = a;//改变
var cityNames = getCityNameByCityId(a);
if(!isNullValue(cityNames)){    
     id("city_name").value=cityNames;
    }
    var stateid = getStateByCityId(a);
    var countryid = getCountryByStateId(stateid);
    setvalue("countryid",countryid);
    setvalue("stateid",stateid);
}

function mapZoneChange(zoneObj){
name("selectzoneid").value = zoneObj.value;
settypeTemplate(1);
}

function mapBizzChange(bizzObj){
name("selectzoneid").value = bizzObj.value;
settypeTemplate(2);
}
function settypeTemplate(values){
var tables = id("add_template");
if(tables){
setSelectedByObj(tables.rows[1].firstChild.firstChild,values);
//alert(tables.rows[0].cells[1].firstChild.innerHTML);
}
}

function zoneChange(a){
zoneChangeHandle(a,bizzoneObj);
}

function addRow(index){
    var table=id("contentTable");
var templateTable=id("add_template");
var newTr=table.insertRow(table.rows.length-1);
var cells=[];
var columnNum=table.rows[0].cells.length;
//newTr.id=index+1;
newTr.name=index+1;
for (var i=0;i<columnNum;i++ ){
cells[i]=newTr.insertCell(i);
cells[i].innerHTML=templateTable.rows[i].firstChild.innerHTML;
}
}
//初始化添加模版
function initTemplate(nos,jindu,weidu){
var templateTable=id("add_template");
templateTable.rows[0].firstChild.firstChild.value= nos+1;//序号
templateTable.rows[2].firstChild.firstChild.value= jindu;//经度
templateTable.rows[3].firstChild.firstChild.value= weidu;//纬度
}

function changMarkerTable(index){
var table = id("contentTable");
var trObj = null;
for(var i=0;i<table.rows.length;i++){
trObj = table.rows[i];
if(trObj.name){
if(trObj.name == index+1){
var point = markers[index].getPoint();
if(point){
trObj.cells[2].firstChild.value = point.x;
trObj.cells[3].firstChild.value = point.y;
}
continue;
}
}
}
}

function changCenterMarkerTable(point){
var table = id("contentTable");
var trObj = null;
for(var i=0;i<table.rows.length;i++){
trObj = table.rows[i];
if(trObj.name){
if(trObj.name == 89){
if(point){
trObj.cells[2].firstChild.value = point.x;
trObj.cells[3].firstChild.value = point.y;
}
continue;
}
}
}
}

function deleteMarkerTable(index){
var table = id("contentTable");
var trObj = null;
for(var i=0;i<table.rows.length;i++){
trObj = table.rows[i];
if(trObj.name){
if(trObj.name == index+1){
table.deleteRow(index+1);
changeMarkerTableIndex(index+1);
continue;
}
}
}

}
function changeMarkerTableIndex(index){
var table = id("contentTable");
var trObj = null;
for(var i=0;i<table.rows.length;i++){
trObj = table.rows[i];
if(trObj.name){
if(trObj.name >= index){
trObj.name = i;
trObj.firstChild.firstChild.value= i;//
}
}
}
}

function setIsCerter(values){
var table = id("add_template");
if(table){
setSelectedByObj(table.rows[4].firstChild.firstChild,values);
if(1 == values){
isCenter = true;
}else{
isCenter = false;
}
}
}

</script>
</html>
分享到:
评论

相关推荐

    高德地图画线

    "高德地图画线"功能是其中的一个特色功能,允许用户在地图上绘制线路,这对于旅行规划、物流配送、户外活动等领域都具有很高的实用价值。现在,我们来详细探讨这个功能及其相关的知识点。 1. **地图API** 高德地图...

    高德地图画线,单条多条带方向示例

    在"高德地图画线,单条多条带方向示例"中,我们主要关注的是`AMap.Polyline`类,这是用来创建折线或直线的类,适用于表示路径或路线。 要实现在地图上画出一条线,首先需要在HTML中引入高德地图的JavaScript库,并...

    ios开发地图画线例子

    "ios开发地图画线例子"是一个典型的示例,它展示了如何在地图上动态绘制路线,特别是当用户移动时,地图上的线条会根据用户的位置实时更新。这个项目主要涉及到两个核心的技术:Apple的MapKit框架和CoreLocation框架...

    百度地图画线demo

    【百度地图画线demo】是一个基于百度地图API实现的示例项目,主要展示了如何在地图上绘制路线,以便用户能够清晰地看到从起点到终点的导航路径。在本项目中,开发者利用百度地图JavaScript API来获取地理位置信息,...

    高德地图画线demo

    "高德地图画线demo"是一个典型的示例,它展示了如何在高德地图上根据起点和终点绘制路线线段。这个Demo对于理解如何在iOS应用中实现地图功能,特别是在路径规划、导航或者展示地理位置信息时非常有帮助。下面我们将...

    高德地图画线,单条多条带方向示例亲测有效,自己也在使用换成你的key就可以

    在“高德地图画线”的场景中,"单条线"是指在地图上绘制一条从一个点到另一个点的路径,而"多条线"则是指同时绘制多条路径,这通常用于展示复杂的路线网络,比如多段导航路线或者公交线路。"带方向示例"则意味着在...

    android开发百度地图画线功能

    在Android开发中,集成百度地图并实现画线功能是一项常用且重要的任务,它可以帮助用户在地图上直观地展示路径或轨迹。本实例将探讨如何在Android应用中利用百度地图API来实现在地图上画线的功能。 首先,我们需要...

    百度地图API开发画线工具

    本篇将详细探讨基于百度地图API的“画线工具”开发,这是一款用于在地图上绘制折线的实用工具。 首先,我们要理解百度地图API的核心功能。百度地图API是百度公司提供的一套用于开发地图相关应用的接口,它允许...

    arcgisforAndroid 地图画线画面测距测量面积 studio版 可用

    该系统在Android平台上实现了丰富的地图操作,包括测距、面积测量以及画线等功能,极大地拓展了移动GIS的应用场景。在"studio"环境下运行,开发者可以构建定制化的地图应用程序,以满足特定的工作需求。 一、测距...

    openlayers3画线功能例子

    在这个"openlayers3画线功能例子"中,我们将深入探讨如何利用OpenLayers 3来实现地图上的线条绘制,包括直线和扇形图。 首先,要实现画线功能,我们需要在HTML文件中引入OpenLayers库的CDN链接或者本地文件。接着,...

    电子地图api动态画线与数据库保存

    在电子地图API的应用中,动态画线是一种常见的功能,它常用于轨迹绘制、路线规划、地理围栏等场景。在本项目中,我们利用电子地图API在PC端实现了这一功能,并将绘制的线数据保存到数据库中,以便后续查询和分析。这...

    百度地图长按、 地图上画线连接各点的简单demo

    本文将详细解析"百度地图长按、地图上画线连接各点的简单demo"这一主题,主要关注如何实现地图上的长按事件以及如何绘制线条连接地图上的多个点。 首先,我们要理解地图长按事件。在Android开发中,通常我们使用...

    百度地图中的动态画线

    百度地图中动态画线, 也可以自己变通从数据库里面获取动态的点之后进行画线

    地图画线导航效果

    在iOS开发中,地图画线导航效果是一种常见的需求,它能为用户提供清晰的路线指示,让用户知道如何从起点到达目的地。本示例源码专为此目的设计,它展示了如何在iOS 7及其以上版本中利用系统提供的API实现这一功能。...

    高德地图简单应用画线

    高德地图简单应用,画线,重定位显示,屏蔽地图文字

    android百度地图实现画线

    在Android平台上,集成百度地图并实现动态画线是一项常见的需求,尤其在开发导航或路径规划应用时。本文将详细介绍如何利用百度地图API实现这一功能,包括基础的API配置、地图显示、定位服务以及动态画线的步骤。 ...

    博能地图增加热力控制工具栏

    在博能地图应用中,"博能地图增加热力控制工具栏"是一个重要的功能更新,它使得用户在交互式地图上能够更直观地理解和分析地理数据。这个功能的实现主要依赖于JavaScript(js)和jQuery库,这两个是前端开发中的核心...

    解决高德地图锁屏黑屏定位不更新,高德地图绘制定位轨迹,高德定位判断定位停留点,高德地图将所有坐标绘制在可视区域内

    解决高德地图锁屏黑屏定位不更新,高德地图绘制定位轨迹,高德定位判断定位停留点,高德地图绘制弹出框等内容。高德地图将所有坐标绘制在可视区域内,本程序作为向高德地图申请高德LBS开发平台开发者认证证书的做业...

    百度地图(在线/离线)实时画出运行轨迹(源码)

    本人百度地图系列博客文章源码,百度地图实时画出运行轨迹,车头实时指向行驶方向,设置角度偏移。对应效果地址:https://blog.csdn.net/xiaoge_586/article/details/116694492

    qt实现echart和百度地图附加多选combox控件

    在本文中,我们将深入探讨如何使用Qt框架来实现ECharts图表、百度地图,并结合自定义的多选ComboBox控件——`mymulticombobox`。这个项目的主要目标是创建一个用户界面,允许用户通过多选ComboBox选择不同的选项,...

Global site tag (gtag.js) - Google Analytics