输入起点位置到达固定位置(一键导航):
通过百度地图拾取坐标 获取坐标位置,map.baidu.com/?latlng=坐标&title=‘成都’&content=‘成都高新区’&autoOpen=ture,----参数分别是:坐标、显示地图中的标题、内容;备注:终点可以在后台配置。
有很多网站用的有百度地图,所以自己也试了试:
百度地图api使用js实现的。首先你要在引入百度地图api的js 1.5版本以前的可以不要密钥,之后的版本要密钥。
//版本是1.4的
<script src="http://api.map.baidu.com/api?v=1.4" type="text/javascript"></script>
//1.5版本
<script src="http://api.map.baidu.com/api?v=1.5&ak=您的密钥" type="text/javascript"></script>
之后给div一个id用于百度地图的显示。
- <div id="container"></div> //百度地图显示位置
- <script type="text/javascript">
- var map = new BMap.Map("container"); // 创建地图实例
- var point = new BMap.Point(104.073025,30.664537); // 创建点坐标 成都的
- map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
-
- map.enableInertialDragging();//开启关系拖拽
map.enableScrollWheelZoom(); //开启鼠标滚动缩放
- var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
-
- </script>
- 这样一个简单的百度地图就可以添加在你的页面中了。
添加复杂的覆盖物:
<script type="text/javascript">
// 百度地图API功能
var map = new BMap.Map("map");
var point = new BMap.Point(104.073025,30.664537); //地图坐标
map.centerAndZoom(point,12); //初始化地图
map.enableScrollWheelZoom() //鼠标滑轮
// 复杂的自定义覆盖物
function ComplexCustomOverlay(point, text, mouseoverText){
this._point = point;
this._text = text;
this._overText = mouseoverText;
}
//继承API的BMap.Overlay
ComplexCustomOverlay.prototype = new BMap.Overlay();
// 实现初始化方法
ComplexCustomOverlay.prototype.initialize = function(map){
//添加覆盖物的样式
// 保存map对象实例
this._map = map;
// 创建div元素,作为自定义覆盖物的容器
var div = this._div = document.createElement("div");
div.style.position = "absolute";
div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);
// 可以根据参数设置元素外观
div.style.backgroundColor = "#EE5D5B";
div.style.border = "1px solid #BC3B3A";
div.style.color = "white";
div.style.height = "18px";
div.style.padding = "2px";
div.style.lineHeight = "18px";
div.style.whiteSpace = "nowrap";
div.style.MozUserSelect = "none";
div.style.fontSize = "12px"
//创建span标签 用于存放覆盖物信息
var span = this._span = document.createElement("span");
//添加到div下面
div.appendChild(span);
span.appendChild(document.createTextNode(this._text));
var that = this;
//添加角图标
var arrow = this._arrow = document.createElement("div");
arrow.style.background = "url(http://map.baidu.com/fwmap/upload/r/map/fwmap/static/house/images/label.png) no-repeat";
arrow.style.position = "absolute";
arrow.style.width = "11px";
arrow.style.height = "10px";
arrow.style.top = "22px";
arrow.style.left = "10px";
arrow.style.overflow = "hidden";
div.appendChild(arrow);
//鼠标移动到上面
div.onmouseover = function(){
this.style.backgroundColor = "#6BADCA";
this.style.borderColor = "#0000ff";
this.getElementsByTagName("span")[0].innerHTML = that._overText;
arrow.style.backgroundPosition = "0px -20px";
}
//鼠标离开
div.onmouseout = function(){
this.style.backgroundColor = "#EE5D5B";
this.style.borderColor = "#BC3B3A";
this.getElementsByTagName("span")[0].innerHTML = that._text;
arrow.style.backgroundPosition = "0px 0px";
}
// 将div添加到覆盖物容器中
map.getPanes().labelPane.appendChild(div);
// 需要将div元素作为方法的返回值,当调用该覆盖物的show、
// hide方法,或者对覆盖物进行移除时,API都将操作此元素。
return div;
} //初始化结束
// 实现绘制方法
ComplexCustomOverlay.prototype.draw = function(){
var map = this._map;
// 根据地理坐标转换为像素坐标,并设置给容器
var pixel = map.pointToOverlayPixel(this._point);
this._div.style.left = pixel.x - parseInt(this._arrow.style.left) + "px";
this._div.style.top = pixel.y - 30 + "px";
}
//ajax 初始化把后台定义好的覆盖物添加位置读取出来显示在页面上
$(function(){
var bs = map.getBounds(),
bssw = bs.getSouthWest(),
bsne = bs.getNorthEast(),
zoom = map.getZoom();
$("body").data("zoom",zoom); //通过jq把变量保存在body中
$("body").data("minlng",bssw.lng);
$("body").data("maxlng",bsne.lng);
$("body").data("minlat",bssw.lat);
$("body").data("maxlat",bsne.lat);
$.ajax({
'type':'post',
'dataType':'json',
'data':{zoom:zoom,minlng:$("body").data('minlng'),maxlng:$("body").data('maxlng'),minlat:$("body").data('minlat'),maxlat:$("body").data('maxlat')},
'url':"{:U('Map/xq')}", //查询位置的控制器方法
'success':function(json){
$("#map_right_content").empty();
$(json).each(function(i){ //因为有多个覆盖物的可能所以通过循环添加到页面中
// 添加自定义覆盖物 这样才能在页面中显示出来
var myCompOverlay = new ComplexCustomOverlay(
//返回的值
new BMap.Point(this.maplng,this.maplat),this.scount+'套',this.scount+"套|"+this.name);
map.addOverlay(myCompOverlay);
});
},
'error':function(data){
alert('真失败');
}
});
});
</script>
// 覆盖物添加完成
后台点击地图获取图标位置信息
marker.enableDragging(); // enableDragging和disableDragging方法可用来开启和关闭标注的拖拽功能。默认情况下标注不支持拖拽
//添加点击监听事件
marker.addEventListener("dragend", function(e){ //dragend 鼠标拖拽事件
//鼠标拖拽的x 和y赋值给input框
$("input[name='maplng']").val(e.point.lng);
$("input[name='maplat']").val(e.point.lat);
})
参考的百度地图的手册和案列
鼠标点击获取经纬度
实例1、
map.addEventListener("click",function(e){
alert(e.point.lng + "," + e.point.lat);
});
实例2、
map.addEventListener("click",moveinfo);
//具体函数
function moveinfo(e){
$("#maplng").val(e.point.lng);
$("#maplat").val(e.point.lat);
}
}
本地搜索
<script type="text/javascript">
//当点击旁边的按钮的时候进行查询
$(".houseInfo4 .house_tag a").click(function(){
var val = $(this).value();
var local = new BMap.LocalSearch(map, {
renderOptions:{map: map, autoViewport: true}
});
local.searchNearby(val, pointer);
});
</script>
后台点击地图,添加覆盖物。
var map ;
$(function(){
map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(104.067923,30.679943),12);
map.enableScrollWheelZoom();
map.addEventListener("click",moveinfo);
});
function showMap(){
var w_w = $(window).width(),
w_h = $(window).height(),
o_w = $("#mapdiv").width(),
o_h = $("#mapdiv").height(),
s_h = $(window).scrollTop(),
s_w = $(window).scrollLeft();
$("#mapdiv").css({
left:s_w + (w_w-o_w)/2,
top:s_h + (w_h-o_h)/2
}).show();
}
var me=this;
var flag=0;
//添加覆盖物
function addMarker(point, index){ // 创建图标对象
var myIcon = new BMap.Icon("http://api.map.baidu.com/images/markers.png", new BMap.Size(23, 25), {
offset: new BMap.Size(10, 25),
imageOffset: new BMap.Size(0, 0 - index * 25) // 设置图片偏移
});
//将覆盖物添加到地图中
var marker = new BMap.Marker(point, {icon: myIcon});
me.marker=marker;
map.addOverlay(me.marker);
//鼠标拖动覆盖物
marker.enableDragging();
marker.addEventListener("dragend", function(e){
$("input[name='maplng']").val(e.point.lng);
$("input[name='maplat']").val(e.point.lat);
})
}
//鼠标点击地图事件
function moveinfo(e){
if(!me.marker||flag){
addMarker(e.point,0);
$("input[name='maplng']").val(e.point.lng);
$("input[name='maplat']").val(e.point.lat);
flag=0;
}
}