精华内容
下载资源
问答
  • openlayers地图实现地点标注

    千次阅读 2019-08-23 10:40:30
    出现的问题是:我每次添加标注后删除,确实删除了,但是当我再次添加不同的标注时,第一次删除的标注再次一块和第二次的标注同时显示在地图上。 后来发现是iconFeature不能设置全局变量,我设置它为全局变量就会有...

    出现的问题是:我每次添加标注后删除,确实删除了,但是当我再次添加不同的标注时,第一次删除的标注再次一块和第二次的标注同时显示在地图上。

    后来发现是iconFeature不能设置全局变量,我设置它为全局变量就会有这个问题,而且点集合(数组)如果设置的是全局变量,删除时也要都先清空数组,不然还会出现这个问题,但是这样还会有一个问题,就是我添加一次然后删除,再添加再删除是没有问题的,如果我添加一次,再添加一次,然后最后再删除,那么只会删除第二次添加的,就是只会删除最近添加的,这个问题等以后在研究吧。现在先把这次解决的代码记下来。页面完整代码。

    import 'ol/ol.css';
    import {Map, View} from 'ol';
    import OSM from 'ol/source/OSM';
    import FullScreen from 'ol/control/FullScreen';
    import Feature from 'ol/Feature.js';
    import Point from 'ol/geom/Point.js';
    import Select from 'ol/interaction/Select.js';
    import {Tile as TileLayer, Vector as VectorLayer} from 'ol/layer.js';
    import Stamen from 'ol/source/Stamen.js';
    import VectorSource from 'ol/source/Vector.js';
    import {Icon, Style} from 'ol/style.js';
    import Draw from 'ol/interaction/Draw.js';
    import Fill from 'ol/style/Fill';
    import Stroke from 'ol/style/Stroke';

    draw(p){
                 //创建图标特性
                  var iconFeature = new Array();
                  for(var i=0;i<p.length;i++){
                    iconFeature.push(new Feature({
                      geometry: p[i]
                    }))
                  }
                  
                  //创建图标样式
                  var iconStyle = new Style({
                    image: new Icon({
                      size:[50,50],
                      src: require('../assets/images/location.png')
                    })
                  });
                  for(var j=0;j<iconFeature.length;j++){
                    iconFeature[j].setStyle(iconStyle);
                  }
                  
                  // 创建矢量容器,将图标特性添加进矢量中
                  vectorSource = new VectorSource({
                    features: iconFeature
                  });
                  //vectorSource.addFeature(iconFeature);
                  //创建矢量层
                  vectorLayer = new VectorLayer({
                    source: vectorSource
                  });
                  //添加进map
                  map.addLayer(vectorLayer);
            }

    //清除覆盖物
                  vectorSource.clear();
                  // for(var i=0;i<iconFeature.length;i++){
                  //   vectorSource.removeFeature(iconFeature[i])
                  // }
                  map.removeLayer(vectorLayer);

    效果图:

    展开全文
  • 百度地图标注地点

    2020-01-14 14:03:25
    地图官方地址:http://lbsyun.baidu.com/index.php?title=jspopular3.0 导入js <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥&s=1"></script> &...

    地图官方地址:http://lbsyun.baidu.com/index.php?title=jspopular3.0

    导入js

    <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥&s=1"></script>
    <div id="container"></div>
    initMap(); //创建和初始化地图
    
    //创建和初始化地图函数:
     function initMap() {
            createMap(); //创建地图
            setMapEvent(); //设置地图事件
      }
     var page_map;
        //创建地图函数:
     function createMap() {
            var map = new BMap.Map("dituContent"); //在百度地图容器中创建一个地图
            page_map = map;
            var x = 119.605720;
            var y = 32.989924;
            var ggPoint = new BMap.Point(x,y);
            // 创建点坐标
            map.centerAndZoom(ggPoint, 5);
            window.map = map; //将map变量存储在全局
     }
    //地图事件设置函数:
    function setMapEvent() {
            map.enableDragging(); //启用地图拖拽事件,默认启用(可不写)
            map.enableScrollWheelZoom(); //启用地图滚轮放大缩小
            map.enableDoubleClickZoom(); //启用鼠标双击放大,默认启用(可不写)
            map.enableKeyboard(); //启用键盘上下左右键移动地图
    }
    
    function initMarker(){
    	let lng =经度 ;
        let lat = 纬度;
        addMarker(lng,lat);
     }
    function addMarker(lng,lat) {
            let point = new BMap.Point(lng, lat);
            let marker = new BMap.Marker(point);
            marker = new BMap.Marker(point);
            let sContent =
                "<h4 style='margin:0 0 5px 0;padding:0.2em 0'>" + "点击弹出窗" + "</h4>" +"<br/>"
            +"";
            let infoWindow = new BMap.InfoWindow(sContent);
            map.addOverlay(marker);
            marker.addEventListener("click", function () {
                this.openInfoWindow(infoWindow);
            });
     }

     

    路线图

    //启用滚轮放大缩小,默认禁用
        var map = new BMap.Map("dituContent");
        map.centerAndZoom(new BMap.Point(120.195224,32.438838), 14);
        var driving = new BMap.DrivingRoute(map, {
            renderOptions: {
                map: map,
                autoViewport: true
            }
        });
        var start = new BMap.Point(120.329176,32.491322);//起点经纬度
        var end = new BMap.Point(120.433358,32.865953);//终点经纬度
        driving.search(start, end);
    
    //起点文字描述
    var point = new BMap.Point(120.329176,32.491322);
        map.centerAndZoom(point, 15);
        var opts = {
            position : point,    // 指定文本标注所在的地理位置
            offset   : new BMap.Size(30, -30)    //设置文本偏移量
        }
        var label = new BMap.Label("XX年XX月XX日XX时由此运出", opts);  // 创建文本标注对象
        label.setStyle({
            color : "red",
            fontSize : "12px",
            height : "20px",
            lineHeight : "20px",
            fontFamily:"微软雅黑"
        });
        map.addOverlay(label);
     /* 终点文字标注 */
        var point = new BMap.Point(120.419756,32.870753);
        map.centerAndZoom(point, 15);
        var opts = {
            position : point,    // 指定文本标注所在的地理位置
            offset   : new BMap.Size(30, -30)    //设置文本偏移量
        }
        var label = new BMap.Label("XX年XX月XX日XX时某批次成品沥青砼到达此地", opts);  // 创建文本标注对象
        label.setStyle({
            color : "red",
            fontSize : "12px",
            height : "20px",
            lineHeight : "20px",
            fontFamily:"微软雅黑"
        });
    
        map.addOverlay(label);

    展开全文
  • 高德地图api的自定义地点标注

    万次阅读 2017-08-10 18:20:13
    最近在做一个使用高德地图api展示自定义地点的项目,为什么会使用高德,而不使用百度、谷歌等其他公司的api开发,这纯粹是因为个人的偏好,笔者本人因为长期使用高德导航,所以对它颇多青睐。 好,言归正传。高德...

    		
    最近在做一个使用高德地图api展示自定义地点的项目,为什么会使用高德,而不使用百度、谷歌等其他公司的api开发,这纯粹是因为个人的偏好,笔者本人因为长期使用高德导航,所以对它颇多青睐。

    高德地图提供的api包括Android,iOS,javascript的api,开发文档非常的详细,如果担心开发文档看不懂的同学,高德还提供了详尽的开发实例,现成的代码再I加上可以实时修改代码运行程序,用户体验真的不错。

    好,言归正传。接来下说说我的项目,首先是的在html中引入我们所需要的高德地图api的外部文件

    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=您的key值"></script>
        	<script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
    
    
    
    至于key值,各位可以在高德的开发者控制台去自动获取,首先你得注册一个账号,随便你的一个 邮箱便可以搞定。这两个库是必须的,没有它就无法显示地图。接下来要在
    html文件的body位置写入需要显示的地图在什么位置:
    <div id="container"></div>
    另外我们还需要引入一个js文件,什么js文件呢?就是模拟数据库的一个js文件,当然你也可以新建一个json文件,引入的代码就不用多说了,这里我写一下里面的内容:
    var park = [{
    	'name' : '鸿禧花园',
    	'center' : '104.080000,30.670000',
    	'type' : 1,
    	'index' :1,
    	'icon' :'img/blue.png',
    	'address': '四川成都一环路南一段1号',
    	'state': 1,
    	'cpu': '30%',
    	'subDistricts' : []
    },{
    	'name' : '金港湾',
    	'center' : '104.000000,30.670000',
    	'type' : 1,
    	'index' :2,
    	'icon' :'img/red.png',
    	'address': '四川成都一环路南一段1号',
    	'state': 2,
    	'cpu': '37%',
    	'subDistricts' : []
    },{
    	'name' : '今日田园',
    	'center' : '103.920000,30.670000',
    	'type' : 1,
    	'index' :3,
    	'icon' :'img/red.png',
    	'address': '四川成都一环路南一段1号',
    	'state': 2,
    	'cpu': '45%',
    	'subDistricts' : []
    },{
    	'name' : '煦华国际',
    	'center' : '104.080000,30.600000',
    	'type' : 1,
    	'index' :4,
    	'icon' :'img/black.png',
    	'address': '四川成都一环路南一段1号',
    	'state': 3,
    	'cpu': '50%',
    	'subDistricts' : []
    }];
    稍微解释一下,center属性是指这个标注点的经纬度位置,地图定位的依据就是来源于经纬度的位置,icon属性是标注点的图标,这里我用的是自己做的图标,这里的属性
    
    
    值是url格式的,只需要你的图片的路径,当然你也可以不设置,那就会使高德默认的蓝色水滴图标,反正我觉得那个图标很丑,所以自己做了一个。其他的都是可有可无的。
    	最终我们的目的是把我们需要的图标展示在地图上,这就需要我们强大的js了。直接上代码:
    	var map = new AMap.Map('container', {
    	        resizeEnable: true,
    	        zoom : 10 
    		});
    		//点击合法marker重定向到parkInfo页面
    		var _onClick = function(e) {
       			
       				window.open("parkInfo.html?id="+this.G.index,"_blank");
       				 
       		}
    		//循环输出数据库中所有的点的位置和信息
    		var markers = [];
    		for(var i = 0;i <= park.length;i+=1){
    			var marker;//实例化marker
    			marker = new AMap.Marker({
        					position: park[i].center.split(','),
        					title: park[i].name,//鼠标移入显示停车场的名称
        					map: map,
        					index: park[i].index,
    				        icon: park[i].icon//自定义显示在地图上的图标
        					        
        				});
        		markers.push(marker);
        		//给所有的点标注添加点击事件
        		AMap.event.addListener(marker, 'click', _onClick);
    		}	
    		//设置地图自适应
    		map.setFitView();
    我这是在每个标注点上添加了一个点击事件,让他重定向到指定的页面,然后将点击的标注点的id通过url传到下一个页面,用来获取该点的信息。
    
    
    	好了,这个项目 就在简单的几行代码中做完了,当然你还可以给地图加上许多样式,还有许多的api可供选择。
    
    

    
    

    至于key值,各位可以在高德的开发者控制台去自动获取,首先你得注册一个账号,随便你的一个 邮箱便可以搞定。这两个库是必须的,没有它就无法显示地图。接下来要在
    html文件的
    展开全文
  • 基于JDBC从数据库中读取数据,在百度地图批量标注地点例程
  • D3js-地图标注地点

    千次阅读 2015-06-17 15:56:55
    <title>d3-中国地图标注 <meta http-equiv="expires" content="0"> ,keyword2,keyword3"> <!-- --> /* .province { stroke: black; stroke-width: 1px; } */ /* .southsea { stroke:...

    效果图:



    所要用到的资源文件:

    1.topojson.js 下载地址:http://www.oschina.net/p/topojson 

    2.china.topojson 、southchinasea.svg 以及 places.json 下载地址:http://download.csdn.net/detail/u013147600/8815899

    其中places.json 是虚假数据

    3. d3.min.js 下载地址:http://d3js.org/      ----(d3.zip)

    源码:


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>d3-中国地图标注</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    	
    	<style>
    	/* .province {
    		stroke: black;
    		stroke-width: 1px;
    	} */
      
    /* 	.southsea {
    		stroke: black;
    		stroke-width: 1px;
    		fill: yellow;
    	} */
    
    	/* .location circle{
    		fill: blue;
    	} */
      </style>
    	
    	 <style type="text/css">
      		.tooltip{
      			font-family:simsun;
      			font-size:16px;
      			width:120;
      			height:auto;
      			position:absolute; 
      			text-align:center;
      			border-style:solid;
      			border-width:1px;
      			background-color:white;
      			border-radius:5px;	
      		}
    
      </style>
      <script type="text/javascript" src="js/d3/d3.js"></script> 
      <script type="text/javascript" src="js/d3/d3.min.js"></script>
    
      <script type="text/javascript" src="js/d3/topojson.js"></script>
      </head>
      
      <body>
        <script type="text/javascript">
        
        	
        	var width =800;
        	var height = 800;
       
       		//添加一个svg 	
        	var svg = d3.select("body").append("svg")
        				.attr("width",width)
        				.attr("height",height);
        				
        	//定义一个投影函数
        	var projection = d3.geo.mercator()
        						.center([110,40]) //设置绘制地图的中心 --根据实定情况定
        						.scale(600) //可以调整所绘地图的大小 --根据实定情况定
        						.translate([width/2,height/3]); //偏移量
        	
        	//通过投影函数定义地理路径生成器
        	var path = d3.geo.path()
        					.projection(projection);
        	
        	//标题
        	svg.append("text")
        		.text("XX公司部门分布")
        		.attr("x",(width/3))
        		.attr("y",50)
        		.attr("font-size","18px")
        		.attr("font-weight","bold")
        		.attr("text-anchor","middle")
        		.attr("fill","black")
        		;
        	//例如以北京经纬度作为投影
        	//var peking=[116.3,39.9];
        	//var proPeking =projection(peking);
        	
        	//读取中国地图的topojson文件
        	d3.json("data/china.topojson",function(error,topodata)
        	{
        		//判断是否出错,在控制台输出错误信息
        		if(error)
        			return console.error(error);
        		
        		//将topojson转换为geojson
        		var geodata = topojson.feature(topodata,topodata.objects.china);
    
        		
        		/* //实现图表的缩放
        		var zoom = d3.behavior.zoom()
        					.scaleExtent([1,5])
        					.on("zoom",zoomed);					
        		
        		function zoomed()
        		{
        			d3.select(this)
        				.attr("transform","translate("+d3.event.translate+")scale("+d3.event.scale+")");
        		} */
        		
        		//包含中国各省路径的分组元素
        		var china =svg.append("g")
        		//.call(zoom) //调用图表缩放函数
        		;
        		
        		//颜色
        		var color = d3.scale.category20c();
        		
        		//添加中国各省的路径元素
        		var provinces =china.selectAll("path")
        							.data(geodata.features)
        							.enter()
        							.append("path")
        							.attr("class","province")
        							 .style("fill",function(d,i)
        							{
        								return color(i);
        							}) 
        							.attr("stroke","black")
        							.attr("stroke-width","1px") 					
        							.attr("d",path);
        								
        		//读取要标注的省份信息
        		d3.json("data/places.json",function(error,placedata)
        		{
        			//插入分组元素
    				var location = svg.selectAll("location")
    						.data(placedata.location)
    						.enter()
    						.append("g")
    						//.attr("class","location")
    						.attr("transform",function(d){
    							//计算标注点的位置
    							var coor = projection([d.log, d.lat]); //经纬度的投影
    							return "translate("+ coor[0] + "," + coor[1] +")";
    
    						});
    					
    					//画圆作为标注
        				location.append("circle")
        						.attr("r",5) //半径
        						.style("fill",function(d,i) 
        						{
        							if(d.name=="福州总部")
        								return "red";
        								
        							return"yellow";
        								
        						})
        						;
        				
        				//添加文字
        				location.append("text")
        					.text(function(d)
    						{
    							return d.name;
    						}
    						)
    						//.attr("fill","red")
    						.attr("fill",function(d,i)
    						{
    							
        							if(d.name=="福州总部")
        								return "red";
        								
        							return"black";
    						})
    						
    						.attr("text-anchor","middle")  
    						.attr("font-family","sans-setif")  
    						.attr("font-size","14px")  
    						.attr("font-weight","bold")  
    						;	
        		});				
        							
        					
        		
        	});
        		
        //插入南海诸岛的svg图片
         d3.xml("data/southchinasea.svg",function(error,xmlDoc)
         {
         	svg.html(function(d)
         	{
         		return d3.select(this).html()+xmlDoc.getElementsByTagName("g")[0].outerHTML;
         	//在当前元素的html里添加 svg文件里面的 第一个g标签及其内容	
         	});
         	 
         	 //return	document.body.appendChild(xmlDoc.documentElement);
         	     	
         	var gSouthSea = d3.select("#southsea");
    	
    		gSouthSea.attr("transform","translate(550,450)scale(0.5)")
    			.attr("class","southsea")
    	     	.attr("stroke","black")
    	     	.attr("stroke-width"," 1px")
    	     	.attr("fill","yellow");
         	
         	
         	//------------------------添加提示框的div
        		var tooltip = d3.select("body").append("div")
        					.attr("class","tooltip") //用于css设置类样式
        					.attr("opacity",0.0);
        	//响应事件
        		//-鼠标移入事件
        	gSouthSea.on("mouseover",function(d)
        		{	
        			//设置tooltip文字
        			tooltip.html("中国南海诸岛")
        			//设置tooltip的位置(left,top 相对于页面的距离) 
        					.style("left",(d3.event.pageX)+"px")
        					.style("top",(d3.event.pageY+20)+"px")
        					.style("opacity",1.0);
        		})
        		//--鼠标移出事件
        		.on("mouseout",function(d)
        		{
        			tooltip.style("opacity",0.0);
        		}); 
       
         });
        		
        </script>
        
      </body>
    </html>
    
    outerHTML、innerHTML以及innerText三者的区别:
    outerHTML可以用来更改或获取元素内所有的html和文本内容,包含引用该方法元素自身的标签.
    innerHTML是用来获取元素内的html内容和文本.
    innerText只获取元素内的文本内容,html标签将被忽略.

    参考网站:http://www.ourd3js.com/wordpress/?p=1201#comment-30319  谢谢馒头华华!

    展开全文
  • 现将存储在excel表中的详细地址导入,然后通过百度地图API查询各个地点的坐标经纬度,并将数据保存到csv文件中备用 ''' 调用百度地图API,批量输入地址查询坐标经纬度 ''' import pandas as pd import json ...
  • 前阵子做在线地图应用的时候,有个需求,就是地点标注出来要按区间分段渲染颜色。当然,可以用标签模拟正方形,三角形,再填充颜色,用css3还可以模拟一些圆形出来,但是一来要兼容万恶的IE7,二来又要好看。 近几年...
  • 基于JDBC从数据库中读取数据,在百度地图批量标注地点 一、相关技术 JSP,JDBC,JSON,JS,百度地图API 二、基于JDBC从数据库读取数据 见“JSP基于JDBC操作MSSQL2008数据库” 三、JS读取JAVA的变量值 var ls_...
  • google地图标注

    2013-11-25 13:26:00
    根据经纬度标注地点.具体可见html描述代码。
  • 可以快速对Excel文档内的坐标转换成地图要素:点、线、面类型。 官网下载地址:http://www.locaspace.cn/?hmsr=SEO&hmpl=&hmcu=&hmkw=&hmci= 下载完成后首先要注册,然后登录使用。 打...
  • 最近一直用到百度地图,先记下了 功能介绍 1,自动定位当前位置;(可能要等一会儿) 2,搜索功能 3,点击地图 小红点标记, 4,点击地图获取当前位置,和当前坐标 代码: ...
  • 现在需求有一堆外卖客户坐标,需要显示到百度地图的中,并显示出,相同坐标有几个,及其地址
  • 注: 1.从本篇开始,我就把这些年积攒的技术都分享出来,有些可能已经过时,但是还是希望能帮到一些人。 2.程序员成长之路小说,还是筹备中,敬请期待。 3.这些文章都会和新浪博客同步。先看效果图: ...
  • 电子地图标注软件

    2013-03-12 17:28:47
     电子地图标注软件用户可以标注位置,搜索地图上本来有的位置和标注的位置,指定某个位置附近(比如说方圆1公里)的某类地理位置,可以把某个标注的位置显示在地图中心。  电子地图标注软件 支持功能:  1....
  • 本篇文章给大家带来的内容是关于js-百度地图多个标注点是如何实现的,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。var markerArr = [{title: "名称:锦江区门诊部",point: "104.118821,30....
  • 保证没有任何功能限制 电脑离线电子地图标注软件主要功能如下:可以标注位置,可以搜索地图上本来有的位置和标注的位置,可以把某个标注的位置显示在地图中心。软件支持电脑在线下载地图后(离线)地图查看浏览, 1....
  • //把标注点MapLocation 对象添加到地图视图上,一旦该方法被调用,地图视图委托方法mapView:ViewForAnnotation:就会被回调 [_mapView addAnnotation:annotation]; } }]; } #pragma mark mapView ...
  • 电子地图标注软件是一款专门为用户设计在电脑上进行地点查询的实用型工具。软件功能强大,可以搜索地图上本来有的位置和标注的位置,并支持电脑在线(离线)地图查看浏览,还支持无人机航拍地图导入。软件界面美观...
  • 二八地图查询是一款用户可浏览地图标注和查询自己感兴趣的地点,对于已经接入GPS设备的用户,还可以查看自己在地图上的位置以及模拟路线规划等等,需要的朋友快来下载使用吧!
  • 前面几篇文章主要是讲了加载天地图、在天地点上循环加载标注点并给标注点添加事件、根据标注点坐标确定地图的显示范围、在天地图显示坐标轨迹以及 在天地图上画多边形,电子范围。 本文再讲一点复杂操作。 1.在...
  • 1、地图应用当中当你需要点击收藏某个地点时,就相当于把这个坐标信息标注出来。 2、地图定位中的小蓝点,相当于在地图上的一个标注。 实现地图上的标注通常有以下几步: 1、新建一个实现了MKAnnotation协议的类。...
  • 1.开发百度地图先去他们的官网申请密钥 下面有道通往百度地图的传送门,申请密钥也方便快捷 传送门 2.百度地图开发方面,demo级别的话,需要三个步骤: 2.0.首先引入百度js,这里需要密钥 :  2.1.设置...
  • //标注点集合,绘制多边形时的集合 /** * 初始化地图 */ function init() { map = new qq.maps.Map(document.getElementById('container'), { center: new qq.maps.LatLng(30.57447, 103.92377), // 暂时默认成都 ...
  • 功能完成后,上级又给加了一个新需求,要求追踪某个学生去过的地点并用自定义图案标注出来,emmmm在翻了好久的api后总算找到了方法,(本来就是后端人员,但是没办法都得自己干,第一次接触这种,官方api我一开始看蒙...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 260
精华内容 104
关键字:

地图地点标注