亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 ajax 請求發出 mapbox geojson 數據

從 ajax 請求發出 mapbox geojson 數據

PHP
哈士奇WWW 2023-04-02 10:43:32
我有一張用 mapbox 創建的世界地圖。在那張地圖上,我想顯示我跑步/騎行/遠足的路線。這些路線(折線)的數據存儲在數據庫中。根據用戶選擇的活動(跑步、騎行、遠足......),我調用一個 ajax 請求(php 文件)來為地圖提供所需的路線。地圖顯示正確,但地圖上沒有顯示路線。php 文件返回正確的 json 數據(使用 JSONLint 測試)?,F在,如果我復制我的 php 文件返回的數據并在我創建地圖的 javascript 中手動復制它,而不是使用我的 ajax 請求,那么所有路線都會正確顯示。我無法弄清楚我的 ajax 請求/php 文件有什么問題。這是我的javascript:mapboxgl.accessToken = '...';var map = new mapboxgl.Map({    container: 'map',    style: 'mapbox://styles/dudanesk/ck9yhkakw2f3a1imzd1qpbs6a',    center: [0, 20],    zoom: 1.25,});// Add zoom and rotation controls to the map.map.addControl(new mapboxgl.NavigationControl());const queryString = window.location.search;const urlParams = new URLSearchParams(queryString);const athleteID = urlParams.get('athleteID');$.ajax({    url: "test.php",    type: "POST",    proccessData: false,    dataType: "JSON",    success: function (json) {        map.on('load', function(){            // Add a new source from our GeoJSON data             map.addSource('route', {                type: 'geojson',            data: json            });            // Create layer from source            map.addLayer({                'id': 'route',                'type': 'line',                'source': 'route',                'layout': {                    'line-join': 'round',                    'line-cap': 'round'                },                'paint': {                    'line-color': 'red',                    'line-width': 2                }            });        });    },    error: function(xhr, status, error){        var errorMessage = xhr.status + ': ' + xhr.statusText        alert('Error - ' + errorMessage);    },});誰能看出為什么路線不會出現在我的地圖上?我沒有任何錯誤信息。感謝您的時間和幫助
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

好的,我想我得到了修復。如果我在開始 ajax 查詢之前移動map.on('load', function(){,而不是將它放在我的 ajax 成功函數中,那么我的代碼似乎可以正常工作:


map.on('load', function(){

    $.ajax({

        url: "test.php",

        type: "POST",

        proccessData: false,

        dataType: "JSON",

        success: function (json) {

            //alert(JSON.stringify(json));

            // Add a new source from our GeoJSON data 

            map.addSource('route', {

                type: 'geojson',

                data: json

            });


            // Create layer from source

            map.addLayer({

                'id': 'route',

                'type': 'line',

                'source': 'route',

                'layout': {

                    'line-join': 'round',

                    'line-cap': 'round'

                },

                'paint': {

                    'line-color': 'red',

                    'line-width': 2

                }

            });

        },

        error: function(xhr, status, error){

            var errorMessage = xhr.status + ': ' + xhr.statusText

            alert('Error - ' + errorMessage);

        },

    });

});



查看完整回答
反對 回復 2023-04-02
  • 1 回答
  • 0 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號