程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在悬停时在弹出窗口中显示 Mapbox 数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在悬停时在弹出窗口中显示 Mapbox 数据?

开发过程中遇到在悬停时在弹出窗口中显示 Mapbox 数据的问题如何解决?下面主要结合日常开发的经验,给出你关于在悬停时在弹出窗口中显示 Mapbox 数据的解决方法建议,希望对你解决在悬停时在弹出窗口中显示 Mapbox 数据有所启发或帮助;

我试图在弹出窗口中只显示城市名称和州

这是我目前拥有的 https://jsfiddle.net/habeRMAN/aj760ok1/1/

它会显示所有属性,但由于某种原因我不能只隔离城市和州。

@H_507_9@mapBoxgl.accesstoken = 'pk.eyJ1IjoiZnJzdhlsc2tpZXIiLCJhIjoiY2swd2p5OXZhMGdIDDNlcGZzYXI2N3rrdSJ9.MY-V2IlbfRAWSEAIDXmhlA';
var map = new mapBoxgl.Map({
    container: 'map',style: 'mapBox://styles/frstylskIEr/cknz0hf0u4ega17pe3vpd6e9l'
});

map.on('mousemove',function (E) {
    var features = map.queryRenderedFeatures(e.point);

    // limit the number of propertIEs we're displaying for
    // legibility and perfoRMANce
    var displayPropertIEs = [
        'propertIEs',];

    var displayFeatures = features.map(function (feat) {
        var displayFeat = {};
        displayPropertIEs.forEach(function (prop) {
            displayFeat[prop] = feat[prop];
        });
        return displayFeat;
    });

    document.getElementByID('features').INNERHTML = JsON.Stringify(
        displayFeatures,null,2
    );
    
    
});

解决方法

你只需要遵循对象的属性路径。

代替

    document.getElementById('features').innerHTML = JSON.Stringify(
        displayFeatures,null,2
    );

使用

    let feat = document.getElementById('features');
    feat.innerHTML = '<div class="city"></div><div class="state"></div>';
    // get the first item in the list,that has name and state_abbrev set
    let searchResult = displayFeatures.find(v => { // pin
        return typeof v.properties == "object" &&
          v.properties && // avoid null errors
          v.properties["Deals: Client City"] &&
          v.properties["Deals: Client State"]
      }) || displayFeatures.find(v => { // default
        return typeof v.properties == "object" &&
          v.properties && // avoid null errors
          v.properties.name &&
          v.properties.state_abbrev
      });
    // just map the pin names to the default names
    if (searchResult && searchResult.properties["Deals: Client City"]) {
      searchResult.properties.name = searchResult.properties["Deals: Client City"];
      searchResult.properties.state_abbrev = searchResult.properties["Deals: Client State"];
    }
    // add the values to the divs inside the node
    feat.querySELEctor(".city").innerText = searchResult ? searchResult.properties.name : "n/a";
    feat.querySELEctor(".state").innerText = searchResult ? searchResult.properties.state_abbrev : "n/a";

大佬总结

以上是大佬教程为你收集整理的在悬停时在弹出窗口中显示 Mapbox 数据全部内容,希望文章能够帮你解决在悬停时在弹出窗口中显示 Mapbox 数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。