Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] 帖子内标注地理位置信息(百度地图)

[复制链接]
adsfdf 发表于 2012-4-8 00:12:10 | 显示全部楼层 |阅读模式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>电子地图标注</title>
<meta http-equiv="X-UA-Compatible" content="IE=7">
<script src="/static/js/jquery.js" type='text/javascript' language="javascript"></script>
<script src="http://api.map.baidu.com/api?v=1.1" type="text/javascript"></script>
</head>
<body >
<table width="960" border="0" align="center" cellpadding="0" cellspacing="0" style="margin-top:6px;" >
  <tr>
    <td width="173" valign="top" class="link_bk">
</td>
    <td valign="top">
  <div class="user_right_box">
  <div class="user_right_top_tit_bg">  
    <h1>设置电子地图</h1>
  </div>
  <table width="100%" border="0" cellpadding="4" cellspacing="0" bgcolor="#FFFFFF">
   <tr>
          <td height="30" bgcolor="#FFFFFF" class="link_lan"  style="padding-left:20px; color: #009900;">请在地图上找见您的具体位置,然后点击地图右上角“标记我的位置”,标记位置完成后点击“保存我的位置”。
    <form action="?act=company_map_set_save" method="post"  style="padding:0px; margin:0px;" id="form1" name="form1">
  <input name="x" type="hidden" id="x"><input name="y" type="hidden" id="y"><input name="zoom" type="hidden" id="zoom">
</form>
    </td>
</tr>
<tr>
<td  height="500" valign="top"  bgcolor="#FFFFFF">
<div style="width:750px;height:450px;border:3px solid  #CCCCCC;  margin:0 auto; cursor:" id="container"></div>
<script type="text/javascript">
var map = new BMap.Map("container");
//假如已经设置了标注
var opts = {   
  width : 100,     // 信息窗口宽度   
  height: 20,     // 信息窗口高度   
  title : ""  // 信息窗口标题   
}
var infoWindow = new BMap.InfoWindow("我们在这里", opts);  // 创建信息窗口对象
//假如有设置的,显示参数
//{#if X及Y坐标不为空}
//var point = new BMap.Point(X坐标, Y坐标);
//map.centerAndZoom(point, 缩放级别);
//var qs_marker = new BMap.Marker(point);        // 创建标注   
//map.addOverlay(qs_marker);  
//map.openInfoWindow(infoWindow,point);      // 打开信息窗口  
//document.getElementById("x").value=X坐标;
//document.getElementById("y").value= Y坐标;
//document.getElementById("zoom").value=  缩放界别;
//{#else#}
var point = new BMap.Point(119.469378,32.785862);
map.centerAndZoom(point, 14);
//{#/if#}
map.addControl(new BMap.NavigationControl());//添加鱼骨
map.enableScrollWheelZoom();//启用滚轮放大缩小,默认禁用。
var myPushpin = new BMap.PushpinTool(map,{
cursor : "crosshair"  
});   // PushpinTool创建标注工具实例
myPushpin.addEventListener("markend", function(e){//添加题地图监控
// 打开信息窗口
map.openInfoWindow(infoWindow,e.marker.getPoint());   
document.getElementById("x").value=e.marker.getPoint().lng;
document.getElementById("y").value= e.marker.getPoint().lat;
document.getElementById("zoom").value= map.getZoom();
//alert(map.getZoom());//地图缩放级别
//map.zoomIn();地图放大一个级别
//alert("您标注的位置:" + e.marker.getPoint().lng + ", " + e.marker.getPoint().lat);
//打开提示层
});
//myPushpin.setIcon(icon:Icon);
// 定义一个控件类,即function   
function ZoomControl(){   
  // 设置默认停靠位置和偏移量   
  this.defaultAnchor = BMAP_ANCHOR_TOP_RIGHT;   
  this.defaultOffset = new BMap.Size(108, 10);   
}
function SaveMap(){   
  // 设置默认停靠位置和偏移量   
  this.defaultAnchor = BMAP_ANCHOR_TOP_RIGHT;   
  this.defaultOffset = new BMap.Size(10, 10);   
}  
// 通过JavaScript的prototype属性继承于BMap.Control   
ZoomControl.prototype = new BMap.Control();
SaveMap.prototype = new BMap.Control();   
  
// 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回   
// 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中   
ZoomControl.prototype.initialize = function(map){   
  // 创建一个DOM元素   
  var div = document.createElement("div");   
  // 添加文字说明   
  div.appendChild(document.createTextNode("标记我的位置"));   
  // 设置样式  
  div.style.cursor = "pointer";
  div.style.padding = "6px";
  div.style.color = "#FFFFFF";
  div.style.border = "1px solid #003300";   
  div.style.backgroundColor = "#009900";   
  div.onclick = function(e){
  map.clearOverlays();//清楚地图上所有覆盖物
  myPushpin.open();//打开标注工具
  }   
  // 添加DOM元素到地图中   
  map.getContainer().appendChild(div);   
  // 将DOM元素返回   
  return div;   
}
SaveMap.prototype.initialize = function(map){   
  // 创建一个DOM元素   
  var div = document.createElement("div");   
  // 添加文字说明   
  div.appendChild(document.createTextNode("保存我的位置"));   
  // 设置样式
  div.style.cursor = "pointer";   
  div.style.padding = "6px";
  div.style.color = "#FFFFFF";
  div.style.border = "1px solid #990000";   
  div.style.backgroundColor = "#FF6600";   
  div.onclick = function(e){
  chk_form();//验证
  }   
  // 添加DOM元素到地图中   
  map.getContainer().appendChild(div);   
  // 将DOM元素返回   
  return div;   
}   
  
// 创建控件   
var myZoomCtrl = new ZoomControl();
var SaveMapsub = new SaveMap();
// 添加到地图当中   
map.addControl(myZoomCtrl);
map.addControl(SaveMapsub);
//验证表单
function chk_form()
{
if (document.form1.x.value=="" || document.form1.y.value=="")
{
alert("请先在地图上标记您的位置")
return (false);
}
else
{
document.form1.submit();
}
}
</script></td>
        </tr>
   </table>
  </div>
    </td>
  </tr>
</table>
</body>
</html>


思路是这样的  用分类信息 添加  缩放级别zoom X坐标  Y坐标 这3个字段
然后发帖时候选择用弹窗标注地理位置 然后再构建地图
DISUCZ不太了解 不会弄。。。
 楼主| adsfdf 发表于 2012-4-8 00:14:56 | 显示全部楼层
本来还有个设置的   


<script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript"></script>

<div class="toptit">电子地图中心点设置</div>
  <form action="admin_set.php?act=site_setsave" method="post"  name="form1" id="form1">
    <table width="100%" border="0" cellspacing="5" cellpadding="0">
    <tr>
      <td valign="top"  ><table width="100%" border="0" cellpadding="1" cellspacing="5"  class="link_lan" style=" margin-bottom:3px;">
        
                <!-- -->
        <tr>
          <td width="120" align="right">默认中心点X坐标:</td>
          <td width="200" height="25"><input name="map_center_x" type="text" value=""  id="map_center_x"  class="input_text_200"  style="color:#009900; font-weight:bold"/></td>
          <td>推动电子地图,系统将自动获取坐标</td>
        </tr>
        <tr>
          <td align="right">默认中心点Y坐标:</td>
          <td height="25"><input name="map_center_y" type="text" value=""  id="map_center_y"  class="input_text_200" style="color:#009900; font-weight:bold"/></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">默认缩放级别:</td>
          <td height="25"><input name="map_zoom" type="text" value="" id="map_zoom"   class="input_text_200" style="color: #009900; font-weight:bold"/></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td height="25"><input name="submit" type="submit" class="admin_submit"    value="保存修改"/></td>
          <td>&nbsp;</td>
        </tr>
        
      </table></td>
      </tr>
    <tr>
      <td valign="top">
          <div style="width:600px;height:400px; border:1px #CCCCCC solid" id="container"></div></td>
      </tr>
  </table>
  </form>
</div>
<script type="text/javascript">
var map = new BMap.Map("container");       // 创建地图实例   
var point = new BMap.Point(119.469378,32.785862);  // 创建点坐标   
map.centerAndZoom(point, 14);
map.addControl(new BMap.NavigationControl());   
map.addEventListener("dragend", function(){   
var center = map.getCenter();
document.getElementById("map_center_x").value=center.lng;
document.getElementById("map_center_y").value= center.lat;
document.getElementById("map_zoom").value=map.getZoom();
});   
</script>
回复

使用道具 举报

aqbhc 发表于 2012-4-8 20:26:51 | 显示全部楼层
很好的想法
回复

使用道具 举报

outdate 发表于 2012-4-8 20:29:09 | 显示全部楼层
不错  支持下
回复

使用道具 举报

dd7744 发表于 2012-12-5 13:33:16 | 显示全部楼层
能增加到现在的分类信息字段吗》?
回复

使用道具 举报

淄川婚庆网 发表于 2013-11-30 15:44:09 | 显示全部楼层
做出个插件大家用啊
回复

使用道具 举报

wl760420 发表于 2015-11-25 16:51:40 | 显示全部楼层
对! 在分类信息里的分类类型里面添加一个地图类型就更好了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-17 00:51 , Processed in 0.025627 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表