js 百度地图标记定位(一)

【html代码】

<div class="control-group">
    <label class="control-label">详细地址:</label>
    <div class="controls">
        <input type="text" id="addr" value="" name="detil_addr"/>
        <input type="button" value="点击定位" style="width:100px;" class="NFButton" onclick="dingwei()">
    </div>
</div>
<div class="control-group">
    <label class="control-label">经纬度:</label>
    <div class="controls">
        <input type="text" name="point_x" id="lng" size=15 onkeypress="if(event.keyCode == 13) return false;">
        <input type="text" name="point_y" id="lat" size=15 onkeypress="if(event.keyCode == 13) return false;">
        <input type="hidden" id="zoom" name="zoom" value="15"  size=5>
    </div>
</div>

<!-- 地图那区域 -->
<div id="content" style="width:95%;height:404px;margin:0 auto;border:1px solid #d3d3d3;">
    <div style="float:left;height:400px;width:100%;display:-webkit-box;overflow:hidden;" id="l-map"></div>
</div>
<div class="clear"></div>
<!-- 地图那区域 -->

【js代码】

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=tuiUeyv6BDiWUuvxwqrS3M8o"></script>

 <script type="text/javascript">

        (function() {        //闭包
            function load_script(xyUrl, callback) {
                var head = document.getElementsByTagName('head')[0];
                var script = document.createElement('script');
                script.type = 'text/javascript';
                script.src = xyUrl;
                //借鉴了jQuery的script跨域方法
                script.onload = script.onreadystatechange = function() {
                    if ((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                        callback && callback();
                        // Handle memory leak in IE
                        script.onload = script.onreadystatechange = null;
                        if (head && script.parentNode) {
                            head.removeChild(script);
                        }
                    }
                };
                // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
                head.insertBefore(script, head.firstChild);
            }
            function translate(point, type, callback) {
                var callbackName = 'cbk_' + Math.round(Math.random() * 10000);    //随机函数名
                var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName;
                //动态创建script标签
                load_script(xyUrl);
                BMap.Convertor[callbackName] = function(xyResult) {
                    delete BMap.Convertor[callbackName];    //调用完需要删除改函数
                    var point = new BMap.Point(xyResult.x, xyResult.y);
                    callback && callback(point);
                }
            }

            window.BMap = window.BMap || {};
            BMap.Convertor = {};
            BMap.Convertor.translate = translate;
        })();

    </script>

<script type="text/javascript">

    var cityName = "杭州市";
    var desAddress =  "西湖区";
    var p2;

	 function addMarker(point,obj,p1){

        var opt = {"title":"","enableDragging":true};

        var marker = new BMap.Marker(point,opt);
        map.addOverlay(marker);

        marker.addEventListener("mouseup", function(e1){
            //alert(e1.point);
			a(e1.point);
        });

    }

    // 百度地图API功能    new BMap.Point(120.204, 33.3)
    var map = new BMap.Map("l-map");

	var dbx="120.137034";
	var dby="30.280934";
	var dbz=12;

	if (dbx && dby && dbz)
	{
		map.centerAndZoom(new BMap.Point(dbx,dby),12);
		addMarker(new BMap.Point(dbx,dby));
	}else{

			var myGeo = new BMap.Geocoder();
			myGeo.getPoint(desAddress, function(point){
				if (point) {
					p2 = point;
					map.centerAndZoom(p2, 12);
				}
				else
				{
					alert("对不起,获取不到您的位置!")
				}
			}, cityName);
	}

    map.addEventListener("click", function(e){
//        alert(e.point.lng + " " + e.point.lat);
        a(e.point);
    });

    function a(pp){
		var x=pp.lng
		var y=pp.lat

		document.getElementById('lng').value=""+ x + ""; //经度
		document.getElementById('lat').value=""+ y +""; //维度
		document.getElementById('zoom').value=""+map.getZoom()+"";

        map.clearOverlays();
		addMarker(new BMap.Point(x,y));

//    var marker = new BMap.Marker(new BMap.Point(x, y));        // 创建标注
//    map.addOverlay(marker);
    }

    map.addControl(new BMap.NavigationControl());
    map.enableScrollWheelZoom(true);

    var options = {
        renderOptions:{map: map, autoViewport: true},

        onSearchComplete: function(results) {
            if (driving.getStatus() == BMAP_STATUS_SUCCESS) {
                // 获取第一条方案
                var plan = results.getPlan(0);

                // 获取方案的驾车线路
                var route = plan.getRoute(0);

                // 获取每个关键步骤,并输出到页面
                var s = [];
                for (var i = 0; i < route.getNumSteps(); i++) {
                    var step = route.getStep(i);
                    s.push((i + 1) + ". " + step.getDescription());
                }
                //document.getElementById("r-result").innerHTML = s.join("<br/>");
            }
        }
    };

    var ctrl = new BMapLib.TrafficControl({
        showPanel: false //是否显示路况提示面板
    });
    map.addControl(ctrl);
    ctrl.setAnchor(BMAP_ANCHOR_TOP_RIGHT);

    //var x = document.getElementById("demox");

    var p1;
    function showPosition(position) {

        BMap.Convertor.translate(new BMap.Point(position.coords.longitude, position.coords.latitude), 0, function(point) {
            //marker.setPosition(point);
            map.panTo(point);
            p1 = point;
            //var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}});
            driving.search(p1, p2);
        });
    }

function dingwei(){
	var adr=document.getElementById('addr').value;
if(adr=='')
{
	alert('请输入正确地址');
	document.getElementById('addr').focus();
	return;
}
    var myGeo = new BMap.Geocoder();
    myGeo.getPoint(adr, function(point){
        if (point) {
            p2 = point;
            map.centerAndZoom(p2, 13);
			map.clearOverlays();
			addMarker(p2);
				document.getElementById('lng').value=""+ point.lng + "";
				document.getElementById('lat').value=""+ point.lat +"";
        }
		else
		{
			alert("对不起,自动定位方式获取不到您的位置!")
		}
    }, cityName);

}

</script>

【css代码】

<link href="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.css" rel="stylesheet" type="text/css" />
<style>.Tadd span{margin:0px;}</style>
时间: 2024-10-12 12:44:43

js 百度地图标记定位(一)的相关文章

js 百度地图 定位到某一中心点

?//实例地图 var map = new BMap.Map("allmap");map.centerAndZoom(new BMap.Point(lon, lat), 16); //在地图上定位到某点 map.clearOverlays(); var new_point = new BMap.Point(lon,lat); var marker = new BMap.Marker(new_point);  // 创建标注 map.addOverlay(marker);        

解决了网页提交servlet后,百度地图标记被覆盖问题。

这一段时间,在做一个起重机的网页管理系统.调用了百度地图API后,发现jsp页面提交给servlet后,可以得到起重机坐标的经纬度,但不能显示地图标记! 原来以为是页面的css样式和百度传过来的css样式产生冲突,经过测试(把提交给servlet的动作取消)发现,css样式并无问题.后经过仔细一想,原来是这样的: 一个提交按钮上有包含了两个动作  1:执行js代码,百度地图标记的标定2:提交给servlet,获取数据库的信息.然后,问题出现了,servlet处理后整个页面刷新,把原来的js执行的

cordova开发中,android端利用百度sdk定位。

原文在此,感谢作者http://snoopyxdy.blog.163.com/blog/static/601174402014420872345/ 近期的一个phonegap项目把我做的焦头烂额,最让人蛋疼的就是安卓4.1.x对html5的定位获取经纬度有个无比巨大的坑,一般我们利用如下代码进行html5的定位 navigator.geolocation.getCurrentPosition(function(pos){               alert(JSON.stringify(po

【iOS】苹果,百度Map定位使用与总结

OS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是百度.苹果自带地图(高德),以下总结下这两个. 一.苹果地图的使用 因为苹果使用的是高德的地图,加上苹果做的一些封装,使用起来也非常方便.不需要引入第三方框架,相比较之下,使用百度地图SDK会使源码与程序都 大10M多,这点很蛋疼.同时由于苹果使用的是高德,不会像谷歌地图一样在国内乌龟一样的访问速度,

发现最新版百度Android 定位SDK v6.1.3 网络定位bug

对于百度地图已经实在忍无可忍了,实验室两年以前的一个项目用到了百度地图,以前师兄毕业了,我来维护这个破项目,百度地图推出新版本出来后,老版本的api不能用了,你就不能做到向下兼容吗?换掉少量的api也就算了,居然整体风格都换了,大爷的,我得先学老版本的api看懂师兄留下的代码,再学新版本的api修改这个项目,这也没啥,然而你新版本官方demo怎么还留bug!!折腾一天后发现,这是百度Android 定位SDK的bug,不是我自己的代码的问题的感觉很奇妙有木有!!! 使用百度官网提供的demo学习

Android利用百度地图定位

百度地图照着百度的教程做的总是出现报错 请帮我看看错误在那 2013-12-13 15:16168海军 | 分类:百度地图 | 浏览1252次 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.map/com.example.map.MainActivity}: android.view.InflateException: Binary XML file line #11: Error i

百度地图定位记录

百度地图是我们做开发要经经常使用到的,在天朝.我们望谷歌而兴叹! !! 首先我们须要从百度地图API下载相应的API  JAR  以及SO文件,防止百度 官网抽风,俺机智的把里面的东西先所有下载出来给出下载链接例如以下: 百度地图API及工具下载地址 官网事实上以及给出了完整的案列以及开发文档,可是假设照搬的话还是不能成功的. 前面配置啥的还是看官网吧. 给出链接 http://developer.baidu.com/map/index.php   方便伸手党. 以下贴出我的代码: 点击下载百度

Android百度地图定位demo

AS写的百度地图定位demo 版本V6.0.5 先上效果图     版权声明:本文为博主原创文章,未经博主允许不得转载.

百度Android定位SDK4.2

项目最近要把定位服务独立出来,所以顺便把定位服务升级到4.2最新版.以下记录一个简单的定位服务的实现(基于百度Android定位4.2版本) 1:首先到百度LBS平台申请密钥 地址是:http://developer.baidu.com/map/index.php 申请密钥需要安全码:你的Eclipse SHA1指纹(Preferences->Android->Build)+分号+应用程序包名 例如: FS:54:EB:47:23:F6:70:FD:DD:GF:53:FS:10:1F:1A:5