带有角的传单标记

如何解决带有角的传单标记

我的Angular项目与Leaflet结合使用时遇到问题。 我想在函数外部创建变量,以便访问标记,并在以后使用另一个函数显示/隐藏它们。为什么我不能用当前代码创建任何标记?

我仅在控制台中收到此错误:无法读取未定义的属性'mar'

我正在使用Angular和Leaflet。

谢谢您的帮助! 最好的问候!

 @Component({
  selector: 'app-map2',templateUrl: './map2.component.html',styleUrls: ['./map2.component.css']
})
export class Map2Component implements OnInit {
  firma: any;
  antwort: Map;
  branches: any;
  laenge: any;
  title = 'leafletApps';
  map: Leaflet.Map;
  marks: any[];
  term2;
  mar : Leaflet.marker[];
  markers = [];


  constructor(
    private route: ActivatedRoute,private mapService: MapService,private branchesService: BranchesService,private domSanitizer: DomSanitizer,private decodeTokenService: DecodeTokenService
  ){}

  

  //Legacy,muss erneuert werden.
  einblenden(id): void {
    console.log(id);
  }

  //Map erstellen
  generateMap(mapJson,filter){

    
    //Bei Partnergebäude keinen Filter anzeigen
    if (mapJson.type == "partner") {
      document.getElementById("filter").style.display = "none";
    }



    if(filter == ''){
      this.laenge = 0;


   


    var h = mapJson.backgroundHeight;
    var w = mapJson.backgroundWidth;
    this.map = Leaflet.map('map',{crs: Leaflet.CRS.Simple,center: [mapJson.midX,mapJson.midY],minZoom: mapJson.zoomMin,maxZoom: mapJson.zoomMax}).setView([mapJson.midX,mapJson.zoomDefault);
    /*var southWest = this.map.unproject([0,h],this.map.getMaxZoom() - 1);
    var northEast = this.map.unproject([w,0],this.map.getMaxZoom() - 1);
    var bounds = new Leaflet.LatLngBounds(southWest,northEast);*/
    var bounds = [[0,[h,w]]; 
    var image = Leaflet.imageOverlay(mapJson.background.url,bounds).addTo(this.map);
    this.map.setMaxBounds(bounds);








//Zoom auslesen und Popups ein/ausblenden
//this.map.on('zoom',console.log("Zoom"));

}

this.addMarkers(mapJson);
  }



  addMarkers(mapJson){
     //eigenen Marker für Standardgebäude definieren
     var mediaMarker = Leaflet.icon({
      iconUrl: 'assets/images/transparent.png',iconSize: [1,1],iconAnchor: [1,});

    

    //Unterscheidung zwischen Partner- und Hauptkarte,//dementsprechende Zuordnung der Marker in das Array;
    //bei Hauptkarte: Verlinkungen auf Partner
    //bei Partner: Modalöffner (Bootstrap) für Medien
    if(mapJson.type == 'partner'){
      console.log(mapJson.type);
      for (let i = 0; i < mapJson.media.length; i++) {
        this.markers.push({pos: [mapJson.media[i].positionX,mapJson.media[i].positionY],popup: '<a data-toggle="modal" data-target=".'+mapJson.media[i].media.id+'" (click)="videoStarten(media.media.id)"><button class="bild" (click)="videoStarten(media.media.id)"><img src="'+mapJson.media[i].icon.url+'" style="max-width: 3em; max-height: 3em;" /></button><br><button class="partnerMediaBeschreibung" (click)="videoStarten(media.media.id)">'+mapJson.media[i].media.description+'</button>',tooltip: mapJson.media[i].name,type: 'media',id: mapJson.media[i].media.id });
      }
    }else if (mapJson.type == 'default'){
        for (let i = 0; i < mapJson.mapChilds.length; i++) {
            if (mapJson.mapChilds[i].icon.id == 10) {
              this.markers.push({pos: [mapJson.mapChilds[i].positionX,mapJson.mapChilds[i].positionY],popup: '<a href="map/'+mapJson.mapChilds[i].childMap.id + '">'+mapJson.mapChilds[i].childMap.description,tooltip: mapJson.mapChilds[i].childMap.name,type: mapJson.mapChilds[i].childMap.type,id: mapJson.mapChilds[i].childMap.id});
            }else{
              this.markers.push({pos: [mapJson.mapChilds[i].positionX,popup: '<a href="map/'+mapJson.mapChilds[i].childMap.id + '">'+'<img src="'+mapJson.mapChilds[i].icon.url+'" />'+mapJson.mapChilds[i].childMap.description,id: mapJson.mapChilds[i].childMap.id});
            }
        }
    }


    var p = Array();
    var m = Array();
    console.log(this.markers);

  //Marker zur Karte hinzufügen
  this.markers.forEach(function(obj){
    if (obj.type=='default') {
      this.mar[obj.id] = Leaflet.marker(obj.pos);
      p[obj.id] = new Leaflet.Popup({
        autoClose: false,closeOnClick: false,autoPan: false,className: 'popp'
      })
        .setContent(obj.popup)
        .setLatLng(obj.pos);
        this.mar[obj.id].bindPopup(p[obj.id]);
        this.mar[obj.id].bindTooltip(obj.tooltip);
    } else if(obj.type =='partner') {
      this.mar[obj.id] = Leaflet.marker(obj.pos);
      p[obj.id] = new Leaflet.Popup({
        autoClose: false,})
        .setContent(obj.popup)
        .setLatLng(obj.pos);
        this.mar[obj.id].bindPopup(p[obj.id]);
        this.mar[obj.id].bindTooltip(obj.tooltip);
    } else if(obj.type='media'){
      this.mar[obj.id] = Leaflet.marker(obj.pos,{icon: mediaMarker});
      p[obj.id] = new Leaflet.Popup({
        autoClose: false,className: 'media'
      })
        .setContent(obj.popup)
        .setLatLng(obj.pos);
        this.mar[obj.id].bindPopup(p[obj.id]);
    }

    
  })

  for (let index = 0; index < this.mar.length; index++) {
    try{
      this.mar[index].addTo(this.map);
      this.mar[index].openPopup();} catch{}
    this.laenge = this.laenge +1;
  }
  }


  //Datenbankanbindung
  getBranches(){
    this.branchesService.getBranches()
    .subscribe(branches => this.branches = branches);
  }

  ngOnInit() {
    const id = this.route.snapshot.paramMap.get('id');
    //evtl Weiterleiten auf Standardgebäude
    if (id == '4') {
      window.location.href = "welcomecenter";
    }else if (id == '5') {
      window.location.href = "cityhall";
    }else if (id == '8') {
      window.location.href = "mediacenter";
    }
    //Datenbankverbindung
    this.mapService.getMap(id)
      .subscribe(firma => this.firma = firma);
    this.mapService.getMap(id)
      .subscribe(antwort => this.generateMap(antwort,''));
    this.getBranches();
    //this.decodeTokenService.decodeUserId(); //UserID erhalten
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-