百度地图点击某点确定具体的经纬度

ly921225 2015-05-28 03:03:14
现在在开发一个项目,要求知道用户点击了地图的点的具体经纬度。就比如说他点击了天安门,就要知道天安门的经纬度,点击了北京南站就要显示北京南站的经纬度,地图大小比例会变,有哪位大神会呀?小弟不胜感激。在这儿卡了很久了,完全没办法呀
...全文
297 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2015-05-29
  • 打赏
  • 举报
回复
楼主给分吧,下面是我研究的完美示例:
<!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>
<style type="text/css">
.master, .master a { color:White;background-color:#FF3333; }
.content { background-color:#F0F0F0; }
.xy { width:120px; }
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
<script type="text/javascript" src="http://dev.baidu.com/wiki/static/map/API/examples/script/changeMore.js"></script>
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
<title>
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="background-image:url('bg.gif');margin-top: 2;">
    <form name="aspnetForm" method="post" action="MapViewer.aspx" id="aspnetForm">
    <div>
        <table width="1000px" align="center">
            <tr>
                <td align="left" class="master">
					经度<input type="text" name="x" id="x" class="xy">
					纬度<input type="text" name="y" id="y" class="xy">
					坐标类型<select name="type" id="type">
						<option value="0" selected>谷歌</option>
						<option value="4" >百度</option>
					</select>
					<input type="button" value="GO" onclick="showxy()">
					点击位置<span id="pick" style="background-color:gray;"></span>
                </td>
            </tr>
            <tr>
                <td class="content">
					<div style="width:100%;height:600px;border:1px solid gray;display:block" id="container">
					</div>
                </td>
            </tr>
        </table>
    </div>
    </form>

<script type="text/javascript">
    var map = new BMap.Map("container", { enableMapClick:true });

    map.addControl(new BMap.Control());                 //添加地图类型控件
    map.addControl(new BMap.MapTypeControl());          //添加地图类型控件
    map.addControl(new BMap.NavigationControl());               // 添加平移缩放控件
    map.addControl(new BMap.ScaleControl());                    // 添加比例尺控件
    map.addControl(new BMap.OverviewMapControl());              //添加缩略地图控件
    //map.setCurrentCity("江苏常州");
    map.centerAndZoom(new BMap.Point(119.9746, 31.82844), 13);
    map.enableScrollWheelZoom(true);
    var i;
    var markers = [];
    map.addEventListener("click", function(e) {
        $("pick").innerHTML = e.point.lng + "," + e.point.lat;
    });

    var tm = [];

    /// 在浏览器地图上显示一个标记
    ///		point 为百度坐标点对象
    function showPoint(point) {
        map.setCenter(point); // 如果是第一个坐标, 移动地图显示它
        var marker = new BMap.Marker(point);
        map.addOverlay(marker);
		var txt = "经度:" + ox+ ",纬度:" + oy;
        var label = new BMap.Label(txt, { offset: new BMap.Size(20, -10) });
        marker.setLabel(label); //添加百度label
        marker.addEventListener("click", function(e) {
            this.openInfoWindow(new BMap.InfoWindow(txt));
        });
    }

    function showInfo(obj) {
        obj.currentTarget.openInfoWindow(obj.currentTarget.infoWindow);
    }

	/// 原始经度,纬度
	var ox, oy;

    /// 传入一个原始坐标, 通过百度API转换后再显示 
    function DoNext(gpsx, gpsy) {
		ox = gpsx; oy = gpsy;
		var maptype = parseInt($("type").value);
		if(maptype==0)
			BMap.Convertor.translate(new BMap.Point(gpsx, gpsy), maptype, showPoint);     //GCJ-02坐标转成百度坐标
		else
		{
			showPoint(new BMap.Point(gpsx, gpsy));
		}
    }

    //eval("var json=[{tm:'2015-03-13 07:56:58',lng:'119.988288879395',lat:'31.9013805389404',id:8470,maptype:0}]");
	//setTimeout(function() { DoNext(json[0].lng, json[0].lat); }, 500);
    
	function $(id) {
		return document.getElementById(id);
	}

	// 根据输入的坐标, 在地图上标出位置
	function showxy() {
		var x = parseFloat($("x").value);
		var y = parseFloat($("y").value);
		if(isNaN(x)||isNaN(y))
			alert("请输入正确的坐标");
		else
			DoNext(x, y);
	}

	var p = (document.location.search);
	if(p.length>=0 && p[0]=="?") {
		var x = 0;
		var y = 0;
		var flag = 0;
		var ps = p.substr(1).split(/&/);
		for(var index in ps) {
			var linestr = ps[index];
			var lineitem = linestr.split(/=/);
			if(lineitem.length==2 && lineitem[0]=="x")
			{
				x = parseFloat(lineitem[1]);
				flag |= 1;
			}
			if(lineitem.length==2 && lineitem[0]=="y")
			{
				y = parseFloat(lineitem[1]);
				flag |= 2;
			}
		}
		if(flag==3 && !isNaN(x) && !isNaN(y))
			DoNext(x, y);
	}
</script>
</body>
</html>
sagittarius1988 2015-05-28
  • 打赏
  • 举报
回复
在你显示地图的activity中的onTouchEvent,如下代码
public boolean onTouchEvent(MotionEvent event) {
		Projection projection = mBaiduMap.getProjection();
		float pointX = event.getX();
		float pointY = event.getY();
		Point point = new Point((int)pointX, (int)pointY);
		LatLng loc = projection.fromScreenLocation(point);
		double lon = loc.longitude;
		double lat = loc.latitude;
		
		return super.onTouchEvent(event);
	}
这里的loc就是你要的位置信息了,请叫我雷锋

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧