解决在EasyUI中使用百度地图出现不居中和坐标图标显示异常的问题(红色代码部分)


问题:

1.加载指定经纬度的坐标点怎么都不居中显示,总是显示在左上角,需要在地图加载完后拖动才看到指定的坐标点;

2.显示的坐标点图片没有正常显示,后面使用了自定义坐标图片(如图):

解决后:

参考:

1.百度地图API类:http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E6%A0%B8%E5%BF%83%E7%B1%BB

2.自定义图标这里有:http://blog.csdn.net/chenmoquan/article/details/13631673

3.坐标总是显示在左上角:http://tieba.baidu.com/p/1712879513

4.解决代码参看myIcon=和map.panBy(320, 225)处,也就是标红的2个部分;


页面:

/* 百度地图样式 */
#allmap {
	width: 650px;
	height: 450px;
}

<div id="allmap"></div>

js:

/****************************************************
 * 加载百度地图
 * http://developer.baidu.com/
 ****************************************************/

var map, myIcon; // 地图全局变量,自定义图标名称

// 加载百度地图:商家名称,lng经度,lat纬度,商家详细地址,商家联系电话
function mapBind(mName, lng, lat, address, tel){
	// 创建百度地图Map实例
	map = new BMap.Map("allmap");
	// 逆地址解析
	var gc = new BMap.Geocoder();

	/**
	 * 百度地图API接口类:http://developer.baidu.com/map/reference/index.php?title=Class:总类/核心类
	 * 自定义坐标点指示图标:http://blog.csdn.net/chenmoquan/article/details/13631673
	 */
	myIcon = new BMap.Icon(objUrl + "/resources/images/detail/myicon.png",
		new BMap.Size(20, 30),
		{
			imageSize: new BMap.Size(20, 30), // 图标所用的图片的大小,此功能的作用等同于CSS中的background-size属性
			anchor: new BMap.Size(10, 30),    // 图标的定位点相对于图标左上角的偏移值
			infoWindowAnchor: new BMap.Size(10, 0) // 信息窗口开启位置相对于图标左上角的偏移值
	});

	// 初始化地图,设置中心点坐标和地图级别 (new BMap.Point(106.620, 26.648), 13);
	//map.centerAndZoom(new BMap.Point(data.C_LONGITUDE, data.C_LATITUDE), 18);
	map.enableScrollWheelZoom(true);
	// 单击获取点击的经纬度
	map.addEventListener(‘click‘,function(e){
		var pt = e.point;
		// 将点击获取的经纬度赋值到控件
		$(‘#txtLng‘).numberbox(‘setValue‘, pt.lng);
		$(‘#txtLat‘).numberbox(‘setValue‘, pt.lat);
		map.clearOverlays();
		map.centerAndZoom(pt);
		map.addOverlay(new BMap.Marker(pt, {icon:myIcon})); //添加标注和自定义图标
		// 逆地址解析:将点击获取的经纬度解析为详细地址
		gc.getLocation(pt, function(rs){
			/* var ac = rs.addressComponents;
			$(‘#txtAddress‘).textbox(‘setValue‘, ac.city +
					ac.district + ac.street + ac.streetNumber); */
			/* alert(ac.province + ", " + ac.city + ", "
					+ ac.district + ", " + ac.street
					+ ", " + ac.streetNumber); */
		});
	});
	// 添加地图类型控件
	map.addControl(new BMap.MapTypeControl());
	// 左上角,添加比例尺
	map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT}));
	// 左上角,添加默认缩放平移控件
	map.addControl(new BMap.NavigationControl());
	// 右上角,仅包含平移和缩放按钮
	/* map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT,
		type: BMAP_NAVIGATION_CONTROL_SMALL})); */
	// 设置地图显示的城市 此项是必须设置的
	//map.setCurrentCity("贵阳市");	

	var point;  //存放标注点经纬信息的数组
    var marker; //存放标注点对象的数组
    var info;   //存放提示信息窗口对象的数组
	if(lng != ‘‘ && lat != ‘‘){
		// 坐标点
		point = new window.BMap.Point(lng, lat);
		// 按照地图点坐标生成标记
        marker = new window.BMap.Marker(point, {icon:myIcon});
        // 跳动的动画
        marker.setAnimation(BMAP_ANIMATION_BOUNCE); 

        // 创建信息窗口对象
        info = new window.BMap.InfoWindow("<p style=’font-size:12px;lineheight:1.8em;’>名称:" + mName
        	+ "</br>地址:" + (address == undefined ? "" : address)
        	+ "</br> 电话:" + (tel == undefined ? "" : tel ) + "</br></p>");
        // 设置坐标的文字标签
        var label = new window.BMap.Label(mName, { offset: new window.BMap.Size(20, -10) });
        marker.setLabel(label);
        // 鼠标移到坐标点显示信息框
        marker.addEventListener("mouseover", function () {
            this.openInfoWindow(info);
        });

        // 清除地图上的所有覆盖物
        map.clearOverlays();
        map.centerAndZoom(point, 18);
        map.addOverlay(marker);
        //map.panTo(point);
        map.setCenter(point);
	}

    // 坐标不居中:http://tieba.baidu.com/p/1049624601
	// http://tieba.baidu.com/p/1712879513
    var newPt = new BMap.Point(lng, lat);
    map.centerAndZoom(newPt, 18);

	//map.setCenter(newPt);或者 map.setCenter(new BMap.Point(lng, lat),16);
    // 中心点偏移多少像素(width,height)为地图div宽高的1/2;解决不居中问题
    map.panBy(320, 225);

	// 百度地图关键字提示输入并定位功能
	mapDownClick();
}

// 百度地图关键字提示输入并定位功能:http://developer.baidu.com/map/jsdemo.htm#a6_2
function mapDownClick(){
	// 建立一个自动完成的对象
	var ac = new BMap.Autocomplete(
	{
		"input" : "suggestId",
		"location" : map
	});

	// 鼠标放在下拉列表上的事件
	ac.addEventListener("onhighlight", function(e) {
		var str = "";
		var _value = e.fromitem.value;
		var value = "";
		if (e.fromitem.index > -1) {
			value = _value.province + _value.city
					+ _value.district
					+ _value.street
					+ _value.business;
		}
		str = "FromItem<br />index = "
				+ e.fromitem.index
				+ "<br />value = " + value;

		value = "";
		if (e.toitem.index > -1) {
			_value = e.toitem.value;
			value = _value.province + _value.city
					+ _value.district
					+ _value.street
					+ _value.business;
		}
		str += "<br />ToItem<br />index = "
				+ e.toitem.index + "<br />value = "
				+ value;
		getObj("searchResultPanel").innerHTML = str;
	});

	// 鼠标点击下拉列表后的事件
	var myValue;
	ac.addEventListener("onconfirm",
		function(e) { //鼠标点击下拉列表后的事件
			var _value = e.item.value;
			myValue = _value.province
					+ _value.city
					+ _value.district
					+ _value.street
					+ _value.business;
			getObj("searchResultPanel").innerHTML = "onconfirm<br />index = "
					+ e.item.index
					+ "<br />myValue = " + myValue;

			// 设置搜到的地点图标
			setPlace(myValue);
	});
}

// 百度地图API功能
function getObj(id) {
	return document.getElementById(id);
}

// 设置搜到的地点图标
function setPlace(myValue) {
	map.clearOverlays(); // 清除地图上所有覆盖物
	function myFun() {
		var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
		map.centerAndZoom(pp, 18);
		map.addOverlay(new BMap.Marker(pp, {icon:myIcon})); //添加标注和自定义图标
	}
	var local = new BMap.LocalSearch(map, { //智能搜索
		onSearchComplete : myFun
	});
	local.search(myValue);
}

时间: 2024-07-31 16:19:59

解决在EasyUI中使用百度地图出现不居中和坐标图标显示异常的问题(红色代码部分)的相关文章

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{ BMKCoordinateRegion region; region.center.latitude  = userLocation.location.coordinate.latitude; region.center.longitude = userLoca

Android应用中使用百度地图API定位自己的位置(二)

官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发者们提供了如下类型的地图覆盖物: 我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标): Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层: 路线图层(RouteOverlay):公交.步行和驾车线路图层,将公交.步行和驾车出行方案的路线及关键点显示在地图上(起.终

在网页中插入百度地图(实例)

步骤 1 2 3 如何在网页中插入百度地图呢? 2.切换城市,搜索需标注位置.(如下图 方法/步骤 1.进入:http://api.map.baidu.com/lbsapi/creatmap/(创建地图-百度地图API所见即所得工具,百度官方地址,大家放心使用) 切换城市,搜索需标注位置.(如下图:) 设置地图:大家可以对网站显示地图的宽高进行设置,其余选项不动. 添加标注:点击第一个图标后,在右侧找到自己的位置,单击鼠标左键可定位.标记图标处可更换图标形状,名称和备注填入位置相关信息.(如下图

在网页中加入百度地图

一.打开的图生成器 http://api.map.baidu.com/lbsapi/creatmap/ 二.创建地图 1.定位中心点,默认为北京,点击切换,输入公司的具体所在城市和具体地址.这个时候,地图会切换到该地点范围内. 2.设置地图,这一点基本上不用管,只用适当的设置下宽度和高度即可. 3.添加标注,其实网站建设者未必知道该企业的准确位置,往往不知道该标在哪.这时候,我们可以打开http://map.baidu.com/ ,查询到详细坐标,标注上去.这个标记图标是可以换的,根据自己喜欢来

Android应用中使用百度地图API并加入标注(一)

网上一些资料这样的的内容已经过时了,这里是最新的内容,假设哪里不正确,请吐槽... 1)下载百度地图移动版API(Android)开发包      要在Android应用中使用百度地图API,就须要在project中引用百度地图API开发包,这个开发包包括两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:比如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77

Android应用中使用百度地图API并添加标注(一)

网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.maji

Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

Android Studio 项目中集成百度地图SDK报以下错误: 1 java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create)I 2 at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Met

在网站中添加百度地图

怎样在网站中引用百度地图? 1.在html中添加一个div,添加一些样式. <div id="divMap" style="width:50%;height:300px;border:1px solid gray;"></div> 2.在head中添加对百度地图的引用. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.

如何在网页中添加百度地图

现在大多数网站都会在联系地址页面插入地图,鉴于目前谷歌网址不能打开的原因,因此百度地图应该成为网站开发者的首选. 楼主因为要搞这个小东西,所以顺便发一篇博客分享,其实网上资料很多,楼主也是参考了网上达人资料,主要目的是为了方便以后自己查看啦! 首先,打开百度地图生成器网址:http://dev.baidu.com/wiki/static/map/API/tool/creatMap/ 点击地图快速生成器,进入选择编辑页面,这里有三步: 第一步是定位中心点,意思就是选择你想要设置的大体位置. 第二步