无法通过Vue在传单中加载pixiOverlay

马吉德

我的传单地图渲染太慢,我发现pixiOverlay可以替代它,但我无法使其运行。任何示例都会有所帮助。

以下是我的组件

<template>
  <div ref="mapElement" style="height: 400px;"></div>
</template>

<script>
  // import {
  //   LMap,
  //   LTileLayer
  // } from 'vue2-leaflet';
  import * as PIXI from 'pixi.js';
  import 'leaflet-pixi-overlay';
  import L from 'leaflet';

  export default {
    name: 'HelloWorld',
    components: {
      // LMap,
      // LTileLayer,
    },
    data() {
      return {
        // url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
        // zoom: 3,
        // center: [47.413220, -1.219482],
        // bounds: null,
        map: L.map
      };
    },
    methods: {
      draw() {
        // this.map = L.map('map', {
        //   center: [30, 30],
        //   zoom: 13,
        // });

        var loader = new PIXI.loaders.Loader();
        loader.add('marker', 'img/marker-icon.png');
        loader.load(function(loader, resources) {
          var markerTexture = resources.marker.texture;
          var markerLatLng = [51.505, -0.09];
          var marker = new PIXI.Sprite(markerTexture);
          marker.anchor.set(0.5, 1);

          var pixiContainer = new PIXI.Container();
          pixiContainer.addChild(marker);

          var firstDraw = true;
          var prevZoom;

          var pixiOverlay = L.pixiOverlay(function(utils) {
            var zoom = utils.getMap().getZoom();
            var container = utils.getContainer();
            var renderer = utils.getRenderer();
            var project = utils.latLngToLayerPoint;
            var scale = utils.getScale();

            if (firstDraw) {
              var markerCoords = project(markerLatLng);
              marker.x = markerCoords.x;
              marker.y = markerCoords.y;
            }

            if (firstDraw || prevZoom !== zoom) {
              marker.scale.set(1 / scale);
            }

            firstDraw = true;
            prevZoom = zoom;
            renderer.render(container);
          }, pixiContainer);

          pixiOverlay.addTo(this.map);
        });
      },
      zoomUpdated(zoom) {
        this.zoom = zoom;
      },
      centerUpdated(center) {
        this.center = center;
      },
      boundsUpdated(bounds) {
        this.bounds = bounds;
      },
    },
    mounted() {
      this.map = L.map(this.$refs['mapElement']).setView([51.505, -0.09], 13);

      L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        maxZoom: 18,
      }).addTo(this.map);

      this.draw();
    },
  }
</script>

我尝试使用生命周期挂钩。我之前遇到的错误是找不到容器(现已解决)。我现在得到的错误是“无法读取null属性”

错误

更新1

<template>
<div ref="map" style="height: 400px;">

</div>
</template>

<script>

import * as PIXI from 'pixi.js';
import 'leaflet-pixi-overlay';
import L from 'leaflet';

export default {
    name: 'HelloWorld',
    
    data() {
        return {
            
            map: L.map
        };
    },
    methods: {
        draw() {
            let loader = new PIXI.Loader()
            loader.add('marker', 'https://pixijs.io/examples/examples/assets/bunny.png')
            loader.load((loader, resources) => {
                let markerTexture = resources.marker.texture
                let markerLatLng = [51.505, -0.09]
                let marker = new PIXI.Sprite(markerTexture)
                marker.anchor.set(0.5, 1)

                let pixiContainer = new PIXI.Container()
                pixiContainer.addChild(marker)

                let firstDraw = true
                let prevZoom

                let pixiOverlay = L.pixiOverlay(utils => {
                    let zoom = utils.getMap().getZoom()
                    let container = utils.getContainer()
                    let renderer = utils.getRenderer()
                    let project = utils.latLngToLayerPoint
                    let scale = utils.getScale()

                    if (firstDraw) {
                        let markerCoords = project(markerLatLng)
                        marker.x = markerCoords.x
                        marker.y = markerCoords.y
                    }

                    if (firstDraw || prevZoom !== zoom) {
                        marker.scale.set(1 / scale)
                    }

                    firstDraw = true
                    prevZoom = zoom
                    renderer.render(container)
                }, pixiContainer)

                pixiOverlay.addTo(this.map)
            })
        },
       
        zoomUpdated(zoom) {
            this.zoom = zoom;
        },
        centerUpdated(center) {
            this.center = center;
        },
        boundsUpdated(bounds) {
            this.bounds = bounds;
        },

    },
    mounted() {
        this.map = L.map(this.$refs.map).setView([51.505, -0.09], 13)

        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            maxZoom: 18,
        }).addTo(this.map)

        this.draw()
    }

}
</script>

错误

用户28

我认为问题在于:

pixiOverlay.addTo(this.map);

因为您this在另一个函数内调用,所以该函数this不会引用您的组件,这意味着它可能未定义或具有另一个值。

您可以使用箭头功能解决此问题:

...
  loader.load((loader, resources) => {
    ...
    var pixiOverlay = L.pixiOverlay((utils) => {
        ...
    }, pixiContainer)

    pixiOverlay.addTo(this.map);
  });
...

JSFiddle

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

在上下文加载之前无法在春季发布自定义事件

Xcode Buildtime错误:“无法加载文件列表的内容:... / Info.plist”(在目标“ xxxx”中)

强制原理在JOIN中加载关联实体

如何解决android studio加载项目?无法加载项目:java.lang.IllegalStateException:@NotNull方法

R传单连续图例中的逆序

具有vue.js的简单HTML无法正常工作

Azure函数:“无法加载一种或多种请求的类型。获取LoaderExceptions属性以获取更多信息”

为什么spark-shell无法加载导入了RDD的类的文件?

使用ng2-semantic-ui在select中加载远程选项不起作用

Android Glide无法从网址加载.jpg

把手从同级文件夹中加载模板

Как удалить жестко запрограммированный значок во Vue?

Вручную смонтировать глобально зарегистрированный компонент Vue в устаревшее приложение?

Как я могу создать подкомпонент для использования с маршрутизатором vue?

如何解决:无法加载或汇编Npgsql或其依赖项之一

Свойство pixiOverlay не существует

Свойство pixiOverlay не существует

Реактивность Vue для динамически создаваемых компонентов

Bubblewrap CLI错误:无法找到或加载主类com.android.sdklib.tool.sdkmanager.SdkManagerCli

MonoGame-通过内容管道加载JSON

Стиль Vue с помощью метода

无法加载Powershell profile.ps1,因为其操作被软件限制策略阻止

如何在lein项目中加载和使用本机C代码?

在Polymer 1.0中动态创建的标记/传单地图无法在Firefox中呈现

即使应用了 {% load static %},Django 静态文件也不会在块内容中加载

Vue Как активировать дочерний компонент при отправке формы

Почему я не могу получить доступ к реквизитам из корня vue внутри шаблона компонентов?

Повторный вызов ошибки вызывает предупреждение vue в тесте шутки

如何在Angular 14中加载主页后立即在后台下载所有模块

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Flutter: Unhandled Exception: FileSystemException: Creation failed, path = 'Directory: '' (OS Error: Read-only file system, errno = 30)

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Bogue étrange datetime.utcnow()

  5. 5

    Строка не читается после новой строки из .env в nodeJs

  6. 6

    Одновременная печать двух этикеток с ZPL

  7. 7

    Как получить список индексов всех значений NaN в массиве numpy?

  8. 8

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  9. 9

    discord.py: on_message (message) не работает несколько дней

  10. 10

    Passing Core Data objects from UITableViewCell to another View Controller

  11. 11

    Django Heroku - ModuleNotFoundError: нет модуля с именем django_heroku

  12. 12

    Ipython использует% store magic для получения динамического имени

  13. 13

    Не удается запустить компилятор cl

  14. 14

    Почему actionPerformed выполняется двумя потоками?

  15. 15

    Предотвращение переноса строк в блоки кода с помощью jekyll, kramdown и rouge

  16. 16

    Можно ли использовать автономные бегуны GitHub Actions без песочницы?

  17. 17

    Почему бы не выдать ошибку ERROR в тесте Jasmine?

  18. 18

    как воспроизводить несколько видео одно за другим в VideoView в android

  19. 19

    How to click an array of links in puppeteer?

  20. 20

    Запрос Google Таблиц по дате и сгруппировать отсутствующие данные

  21. 21

    Не могу понять, почему Wix не перезаписывает старую версию

популярныйтег

файл