google 地图,添加文本标注,可提交到数据库(更新,删除,修改)
来源:互联网 发布:手机赌钱软件 编辑:程序博客网 时间:2024/06/05 00:17
这个代码着实解决了很久,参考了很多资料。Google没有提供文本标签的API,不像Mapabc,51ditu,baidu 地图..所以只能重写其中的方法,另外文本标签还涉及到的更新也纠结了很久,最终还是解决了。
先看源码:
//初始化标记数据
GMarkerInfo.prototype.InitLocation = function(ilng,ilat,addr,map)
{
this.addrilng=ilng;
this.addrilat=ilat;
this.addraddr=addr;
this.mapgoogle=map;
this.addrpoint=new GLatLng(ilat,ilng);
};
//所有的初始化完成时添加到地图
GMarkerInfo.prototype.AddLocationToMap = function(gmap)
{
gmap.addOverlay(this.addrmarker);
gmap.addOverlay(this.addrmarkertext);
};
//初始化标注,包括文本标注,图标标注
GMarkerInfo.prototype.InitAddrMarkert = function()
{
this.addrmarker = new GMarker(this.addrpoint);
this.addrmarkertext= new this.TextOverlay(this.addrpoint,"<span style='color:red; width:auto;'>"+this.addraddr+"</span>");
var otherobj=this;
GEvent.addListener(this.addrmarker, "click", function(latlng)
{
otherobj.parent.addraddr = otherobj.addraddr;
otherobj.parent.addrilat = otherobj.addrilat;
otherobj.parent.addrilng = otherobj.addrilng;
otherobj.parent.addrmarker = otherobj.addrmarker;
otherobj.parent.addrmarkertext = otherobj.addrmarkertext;
otherobj.parent.addrmap = otherobj.mapgoogle;
otherobj.parent.markertextarr=otherobj.markertextarr;
otherobj.parent.markertextarr.push(otherobj.addrmarkertext);
otherobj.AddrClick();
});
};
//添加标注点击事件
GMarkerInfo.prototype.AddrClick = function()
{
var DeleteUpdateDIV=document.getElementById("DeleteUpdate");
DeleteUpdateDIV.style.display='block';
DeleteUpdateDIV.style.zIndex='9999';
var subUpdate=BGMGmap.$('updatesubmit');//获取更新提交按钮
var updaterobj=BGMGmap.$('addridupdate'); //获取更新输入框
var subDelete=BGMGmap.$('deletesubmit');
var UDCancelbtn=BGMGmap.$('UDCancel');
UDCancelbtn.onclick=function()
{
DeleteUpdateDIV.style.display='none';
DeleteUpdateDIV.style.zIndex='1000';
};
var otherpara=this.parent;
var otherobj=this;
subUpdate.onclick=function()
{
var m_updateAddress=''; //更新地址
m_updateAddress=updaterobj.value;
window.external.UpdateMarkerToMap(otherpara.addrilat*100000,otherpara.addrilng*100000,m_updateAddress,2); //更新到服务端
updaterobj.value='';
DeleteUpdateDIV.style.display='none';
DeleteUpdateDIV.style.zIndex='1000';
otherpara.addrpoint=new GLatLng(otherpara.addrilat,otherpara.addrilng);
otherpara.addrmarker=new GMarker(otherpara.addrpoint,{title:m_updateAddress});
otherpara.addraddr=m_updateAddress;
var len=otherpara.markertextarr.length;
//alert(len);
for(var index=0;index<len;index++)
{
var predelobj=otherpara.markertextarr[index];
if(typeof(predelobj)!='undefined')
{
otherpara.addrmap.removeOverlay(predelobj);
delete predelobj;
}
}
otherpara.addrmarkertext=new otherobj.TextOverlay(otherpara.addrpoint,"<span style='color:red; width:auto;'>"+m_updateAddress+"</span>");
otherpara.addrmap.addOverlay(otherpara.addrmarkertext);
otherpara.markertextarr.push(otherpara.addrmarkertext); //添加一个
};
var otherpara1=this.parent;
subDelete.onclick=function(){
window.external.DeleteMarkerToMap(otherpara1.addrilat*100000, otherpara1.addrilng*100000,2); //删除提交到服务端
updaterobj.value='';
otherpara1.addrmap.removeOverlay(otherpara1.addrmarker);
otherpara1.addrmap.removeOverlay(otherpara1.addrmarkertext);
DeleteUpdateDIV.style.display='none';
DeleteUpdateDIV.style.zIndex='1000';
};
};
//创建文本标注,继承实现GOverlay 的方法
GMarkerInfo.prototype.TextOverlay=function(latLng, html) {
this.latLng = latLng;
this.html = html;
};
GMarkerInfo.prototype.TextOverlay.prototype = new GOverlay();
GMarkerInfo.prototype.TextOverlay.prototype.initialize = function(map) {
var div = document.createElement("div");
div.style.position = "absolute";
div.style.width = "1000px";
div.innerHTML = this.html;
map.getPane(G_MAP_MAP_PANE).appendChild(div);
this.map_ = map;
this.div_ = div;
this.redraw(true);
}
GMarkerInfo.prototype.TextOverlay.prototype.remove = function() {
this.div_.parentNode.removeChild(this.div_);
}
GMarkerInfo.prototype.TextOverlay.prototype.copy = function() {
return new TextOverlay(this.latLng, this.html);
}
GMarkerInfo.prototype.TextOverlay.prototype.redraw = function(force) {
if (!force) {
return;
}
var position = this.map_.fromLatLngToDivPixel(this.latLng);
this.div_.style.left = position.x + "px";
this.div_.style.top = position.y + "px";
}
GMarkerInfo.prototype.TextOverlay.prototype.setLatLng = function(latLng) {
this.latLng = latLng;
this.redraw(true);
}
GMarkerInfo.prototype.TextOverlay.prototype.getLatLng = function() {
return this.latLng;
};
效果如下【只展现更新功能,其余添加、删除代码未贴出】:
更新提交到数据库:
当然这还要添加一段HTML,用来呈现操作窗口。
<body onunload="GUnload()">
<div id="addMark" style="position: absolute; z-index: 2000; left: 50%; top: 250px;
display: none; height: 48px; border: solid 3px blue; background-color: #26e2e8;
text-align: center;">
地标:<input type='text' id='addrid' name='addrid' /><br />
<input type='button' value='提交' id='addsubmit' name='addsubmit' />
<input type='button' value='关闭' id='SubCancel' name='SubCancel' />
</div>
<div id="DeleteUpdate" style="position: absolute; z-index: 1000; left: 50%; top: 250px;
display: none; height: 48px; border: solid 3px blue; background-color: #26e2e8;
text-align: center;">
地标:<input type='text' id='addridupdate' name='addridupdate' /><br />
<input type='button' value='更新' id='updatesubmit' name='updatesubmit' /><input type='button'
value='删除' id='deletesubmit' name='deletesubmit' />
<input type='button' value='关闭' id='UDCancel' name='UDCancel' />
</div>
<div id="mapDiv" style="width: 100%; height: 850px;">
</div>
</body>
<script type="text/javascript">
var map = new BGMGmap("mapDiv");
</script>
- google 地图,添加文本标注,可提交到数据库(更新,删除,修改)
- 谷歌地图添加文本标注
- iOS 之 使用百度地图 (删除地图页面所有自己添加的标注)
- iOS 之 使用百度地图 (删除地图页面所有自己添加的标注)
- Google map API3 标注、添加事件、地图查询
- angularjs 可添加+修改+删除
- 百度地图添加标注(显示多个标注点)
- 给地图添加标注
- listView添加 修改 删除 保存数据到数据库操作
- C# 连接数据库(添加,修改,删除)
- 用Ajax加载Google地图并向地图上添加标注信息
- IOS——地图的使用、地图定位到当前位置(包括ios8获取位置)、地图标注的添加、地图放大缩小监听
- 百度地图添加标注点
- 地图开发添加标注物
- Google map 搜索+点击地图添加标注点 并且返回坐标
- arcEngine经典代码-添加气泡提示框(标注,文本,)
- 百度地图API中使用ajax实现点击地图生成标注并保存到数据库
- 删除当前地图上已经添加的标注数组报错
- ABI EABI
- 窗口程序的运行过程
- linux下多线程的创建与等待详解
- IOS开发(38)之Objective-c的@property 详解
- flex验证
- google 地图,添加文本标注,可提交到数据库(更新,删除,修改)
- META http-equiv="refresh" 实现网页自动跳转
- HTC发布第一季度财报 仍然面临严峻挑战
- QueueUserApc实现DLL注入的测试
- c++杂记(new)
- TQ2440 u-boot-2012.04.01移植五支持DM9000
- Java中解析XML的四种常用方法(1)_DOM解析
- [Mysql]查看版本号的五种方式
- SQL 左外连接,右外连接,全连接,内连接