zoukankan      html  css  js  c++  java
  • openlayers 点击添加标记(要素) Demo(可直接运行)

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="https://openlayers.org/en/v5.3.0/css/ol.css" />
      <script type="text/javascript" src="https://openlayers.org/en/v5.3.0/build/ol.js"></script>
      <title>Document</title>
    </head>
    <body>
      <div id="map"></div>
      <script>
          var beijing = ol.proj.fromLonLat([116.28, 39.54]);
          var map = new ol.Map({
              target: 'map',
              layers: [
                  new ol.layer.Tile({
                      source: new ol.source.OSM()
                  })
              ],
              view: new ol.View({
                  center: beijing,
                  zoom: 4
              })
          });
    
          //实例化矢量点要素,通过矢量图层添加到地图容器中
          //这样就实现了预先加载图文标注
          var iconFeature = new ol.Feature({
              geometry: new ol.geom.Point(beijing),
              name: '北京市',                         //名称属性
              population: 2115                       //人口数(万)
          });
          //设置点要素样式
          iconFeature.setStyle(createLabelStyle(iconFeature));
          //矢量标注的数据源
          var vectorSource = new ol.source.Vector({
              features: [iconFeature]
          });
          //矢量标注图层
          var vectorLayer = new ol.layer.Vector({
              source: vectorSource
          });
          map.addLayer(vectorLayer);
    
          //矢量标注样式设置函数,设置image为图标ol.style.Icon
          function createLabelStyle(feature){
              console.log(feature);
              return new ol.style.Style({
                  image: new ol.style.Icon({
                      anchor: [0.5, 60],              //锚点
                      anchorOrigin:'top-right',       //锚点源
                      anchorXUnits: 'fraction',       //锚点X值单位
                      anchorYUnits: 'pixels',         //锚点Y值单位
                      offsetOrigin: 'top-right',      //偏移原点
                      opacity: 0.75,
                      scale: 0.05,
                      src: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1594359193211&di=1d6bb819a5daa724ff65cc4d011d4d42&imgtype=0&src=http%3A%2F%2Fku.90sjimg.com%2Felement_pic%2F17%2F10%2F27%2F05dc60e54e3aa5d093cdc32611303643.jpg'  //图标的URL
                  }),
              });
          }
    
          map.on('click', function(evt){
              var coordinate = evt.coordinate;        //鼠标单击点的坐标
              //新建一个要素ol.Feature
              var newFeature = new ol.Feature({
                  geometry: new ol.geom.Point(coordinate),  //几何信息
                  name: '标注点'
              });
              newFeature.setStyle(createLabelStyle(newFeature));      //设置要素样式
              vectorSource.addFeature(newFeature);
          });
      </script>
    </body>
    </html>
    

    效果图:

  • 相关阅读:
    相对定位和绝对定位
    Html中常见的块级元素
    浮动的用法
    c#中质数判断
    函数
    asp.net Jquery+json 实现无刷新分页
    MS CRM2011 某个用户(团队)对某个实体的操作权限
    asp.net sitemap url动态参数
    MS CRM 2011 更改团队的业务部门
    MS CRM 2011 解决记录总数问题
  • 原文地址:https://www.cnblogs.com/wwj007/p/13497732.html
Copyright © 2011-2022 走看看