调用百度地图接口,在地图上添加标记并点击显示具体信息

对于在想实现地图功能时,百度地图和高德地图都提供了很好的API接口,直接进入官网查找相应的开发文档即可。
我这里使用的是百度地图,首先你得申请一个百度的密钥,这个很简单,网上很多教程。
货不多说,下面看代码

<!DOCTYPE html>
<html xmlns:asp="">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
    </style>
    <script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=d5Y5C26Xbhr3rBHo3GzzaA7xcXev6NL0"></script>
    <title>添加信息窗口</title>
</head>
<body>
<div id="allmap"></div>
</body>
<script>
    // An highlighted block
    //百度地图API功能

    function loadJScript() {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "//api.map.baidu.com/api?v=2.0&ak=d5Y5C26Xbhr3rBHo3GzzaA7xcXev6NL0&callback=init";
        document.body.appendChild(script);
    }
    window.init = function() {
        var map = new BMap.Map("allmap");            // 创建Map实例
        //var point = new BMap.Point(109.18592,34.36912); // 创建点坐标
        map.centerAndZoom(new BMap.Point(109.19708,34.36820), 15);  // 设置中心点,地图初始化
        //map.centerAndZoom(points,20);
        map.setCurrentCity("西安");          //设置当前城市
        map.clearOverlays();
        map.addControl(new BMap.MapTypeControl());
        map.enableScrollWheelZoom(true);                 //启用滚轮放大缩小
        map.addEventListener('click', function(e) {
            alert('点击的经纬度:' + e.latlng.lng + ', ' + e.latlng.lat);
            var mercator = map.lnglatToMercator(e.latlng.lng, e.latlng.lat);
            alert('点的墨卡托坐标:' + mercator[0] + ', ' + mercator[1]);
        });
        //向地图中添加缩放控件
        var ctrlNav = new window.BMap.NavigationControl({
            anchor: BMAP_ANCHOR_TOP_LEFT,
            type: BMAP_NAVIGATION_CONTROL_LARGE
        });
        map.addControl(ctrlNav);


		//向地图中添加标记点
        var myIcon =new BMap.Icon("http://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), {    //小车图片
            offset: new BMap.Size(0, -5),    //相当于CSS精灵
            imageOffset: new BMap.Size(0, 0)    //图片的偏移量。为了是图片底部中心对准坐标点。
        });

        var points = [new BMap.Point(109.19474,34.36847),new BMap.Point(109.19435,34.37712),new BMap.Point(109.19261,34.37617),new BMap.Point(109.19701,34.37728),new BMap.Point(109.19702,34.37776),new BMap.Point(109.19784,34.37738),new BMap.Point(109.19784,34.376911),new BMap.Point(109.1987,34.37333),new BMap.Point(109.19705,34.36824),new BMap.Point(109.1836,34.37393)];   //10个坐标点

        var marker1 =new BMap.Marker(points[1],{icon:myIcon});  // 创建10个标注
        var marker2 =new BMap.Marker(points[2],{icon:myIcon});
        var marker3 =new BMap.Marker(points[3],{icon:myIcon});
        var marker4 =new BMap.Marker(points[4],{icon:myIcon});
        var marker5 =new BMap.Marker(points[5],{icon:myIcon});
        var marker6 =new BMap.Marker(points[6],{icon:myIcon});
        var marker7 =new BMap.Marker(points[7],{icon:myIcon});
        var marker8 =new BMap.Marker(points[8],{icon:myIcon});
        var marker9 =new BMap.Marker(points[9],{icon:myIcon});
        var marker0 =new BMap.Marker(points[0],{icon:myIcon});

        map.addOverlay(marker1);              // 将标注添加到地图中
        map.addOverlay(marker2);
        map.addOverlay(marker3);
        map.addOverlay(marker4);
        map.addOverlay(marker5);
        map.addOverlay(marker6);
        map.addOverlay(marker7);
        map.addOverlay(marker8);
        map.addOverlay(marker9);
        map.addOverlay(marker0);

        map.setViewport(points);         //调整地图的最佳视野为显示标注数组point

        var opts1 = {title : '<span style="font-size:14px;color:#0A8021">DTU01</span>'};
        var opts2 = {title : '<span style="font-size:14px;color:#0A8021">DTU02</span>'};
        var opts3 = {title : '<span style="font-size:14px;color:#0A8021">DTU03</span>'};
        var opts4 = {title : '<span style="font-size:14px;color:#0A8021">DTU04</span>'};
        var opts5 = {title : '<span style="font-size:14px;color:#0A8021">DTU05</span>'};
        var opts6 = {title : '<span style="font-size:14px;color:#0A8021">DTU06</span>'};
        var opts7 = {title : '<span style="font-size:14px;color:#0A8021">DTU07</span>'};
        var opts8 = {title : '<span style="font-size:14px;color:#0A8021">DTU08</span>'};
        var opts9 = {title : '<span style="font-size:14px;color:#0A8021">DTU09</span>'};
        var opts0 = {title : '<span style="font-size:14px;color:#0A8021">DTU10</span>'};

        var infoWindow1 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b1>09.19474</br><b>纬度:</b>34.36847</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts1);  // 创建信息窗口对象,引号里可以书写任意的html语句。
        var infoWindow2 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19435</br><b>纬度:</b>34.37712</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts2);
        var infoWindow3 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19261</br><b>纬度:</b>34.37617</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts3);
        var infoWindow4 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19501</br><b>纬度:</b>34.37728</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts4);
        var infoWindow5 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19601</br><b>纬度:</b>34.37628</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts5);
        var infoWindow6 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19771</br><b>纬度:</b>34.37528</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts6);
        var infoWindow7 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19761</br><b>纬度:</b>34.37428</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts7);
        var infoWindow8 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19731</br><b>纬度:</b>34.37578</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts8);
        var infoWindow9 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19741</br><b>纬度:</b>34.37598</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts9);
        var infoWindow0 =new BMap.InfoWindow("<div style='line-height:1.8em;font-size:12px;'><b>经度:</b>109.19752</br><b>纬度:</b>34.37328</br><b>口碑:</b><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><img src='http://cdn2.iconfinder.com/data/icons/diagona/icon/16/031.png' /><a style='text-decoration:none;color:#2679BA;float:right' href='#'>详情>></a></div>", opts0);

        marker1.addEventListener("click", function(){this.openInfoWindow(infoWindow1);});
        marker2.addEventListener("click", function(){this.openInfoWindow(infoWindow2);});
        marker3.addEventListener("click", function(){this.openInfoWindow(infoWindow3);});
        marker4.addEventListener("click", function(){this.openInfoWindow(infoWindow4);});
        marker5.addEventListener("click", function(){this.openInfoWindow(infoWindow5);});
        marker6.addEventListener("click", function(){this.openInfoWindow(infoWindow6);});
        marker7.addEventListener("click", function(){this.openInfoWindow(infoWindow7);});
        marker8.addEventListener("click", function(){this.openInfoWindow(infoWindow8);});
        marker9.addEventListener("click", function(){this.openInfoWindow(infoWindow9);});
        marker0.addEventListener("click", function(){this.openInfoWindow(infoWindow0);});

    }
    loadJScript()
</script>

<script>
    layui.use('theme/settings/earth', layui.factory('theme/settings/earth'));
</script>

<!--<script type="text/javascript" src="js\jquery-2.1.1.min.js"></script>-->

</html>

这里使用的是layui前段框架,和百度官方提供的代码有所区别,下面是官方提供的案列

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
	<style type="text/css">
		body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
	</style>
	<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=您的密钥"></script>
	<title>添加信息窗口</title>
</head>
<body>
	<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
	// 百度地图API功能
	var map = new BMapGL.Map("allmap");
	var point = new BMapGL.Point(116.404, 39.925);
	map.centerAndZoom(point, 15);
	
	var marker = new BMapGL.Marker(point);  // 创建标注
	map.addOverlay(marker);              // 将标注添加到地图中
	var opts = {
	    width : 200,     // 信息窗口宽度
	    height: 100,     // 信息窗口高度
	    title : "故宫博物院" , // 信息窗口标题
	    message:"这里是故宫"
	}
	var infoWindow = new BMapGL.InfoWindow("地址:北京市东城区王府井大街88号乐天银泰百货八层", opts);  // 创建信息窗口对象 
	marker.addEventListener("click", function(){          
		map.openInfoWindow(infoWindow, point); //开启信息窗口
	}); 
</script>

在layui中需要对其先初始化,对地图一些功能的实现都写在 window.init = function() 里面。

 function loadJScript() {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "//api.map.baidu.com/api?v=2.0&ak=d5Y5C26Xbhr3rBHo3GzzaA7xcXev6NL0&callback=init";
        document.body.appendChild(script);
    }
     window.init = function() {
     
	}
loadScript()

运行出来后是
红色的即为添加的标记点

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 Uniapp 移动端应用中获取定位并在地图显示当前位置,可以使用以下步骤: 1. 在项目中引入地图 SDK(如百度地图 SDK、高德地图 SDK 等),并按照相应的文档进行配置。 2. 在页面中创建地图组件,并设置地图的初始中心点和缩放级别。 3. 在页面中添加获取定位的按钮,并在按钮的点击事件中调用定位 API 来获取当前位置的经纬度信息。 4. 将获取到的经纬度信息传递给地图 SDK,并使用 SDK 提供的接口地图添加当前位置的标记。 以下是一个简单的示例代码: ``` <template> <view> <map :longitude="longitude" :latitude="latitude" :scale="scale" @markertap="onMarkerTap"></map> <button @tap="getLocation">获取位置</button> </view> </template> <script> export default { data() { return { longitude: 0, // 地图中心点的经度 latitude: 0, // 地图中心点的纬度 scale: 16, // 地图的缩放级别 } }, methods: { // 获取定位信息 getLocation() { uni.getLocation({ type: 'gcj02', // 使用国测局坐标系 success: res => { this.longitude = res.longitude this.latitude = res.latitude // 在地图添加当前位置的标记 uni.addMapMarkers({ id: 0, longitude: res.longitude, latitude: res.latitude, title: '当前位置', iconPath: '当前位置的图标路径', width: 32, height: 32, callout: { content: '当前位置', fontSize: 14, bgColor: '#ffffff', padding: 8, borderRadius: 4, display: 'ALWAYS' } }) }, fail: res => { uni.showToast({ title: '获取位置失败', icon: 'none' }) } }) }, // 点击标记时的事件处理函数 onMarkerTap(e) { uni.showToast({ title: '你点击了当前位置', icon: 'none' }) } } } </script> ``` 需要注意的是,在使用定位 API 时,需要在 `manifest.json` 文件中声明相关权限(如 `location`)。另外,在添加标记时,需要指定标记的图标路径和样式,并可以添加一个气泡提示框来显示标记信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值