gpt4 book ai didi

javascript - 无法将 d3 向量附加到传单 map

转载 作者:行者123 更新时间:2023-11-30 20:07:42 25 4
gpt4 key购买 nike

我正在尝试获取要覆盖在传单 map 上的点。

我在 html 中创建 map 元素,构建传单 map ,读取数据。

这就是我被绊倒的地方。我想在 map 上显示点 - 我已经在 d3 map 上成功显示了这些点,但我想在上面的传单 map 上重新显示它们。而不是提取纬度/经度,正如我在 d3 + 传单示例中看到的那样,我想我只是使用我之前成功使用过的路径生成器函数,以便将点附加到传单。

这里的代码序列:

    <div id="map" class="sf" style="width: 600px; height: 400px"></div>

function ready(error) {

//Build Leaflet map
L.mapbox.accessToken =

'pk.eyJ1Ijoic3RhcnJtb3NzMSIsImEiOiJjaXFheXZ6ejkwMzdyZmxtNmUzcWFlbnNjIn0.IoKwNIJXoLuMHPuUXsXeug';
var mapboxUrl = 'https://api.mapbox.com/styles/v1/mapbox/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}';
//var accessToken = 'pk.eyJ1Ijoic3RhcnJtb3NzMSIsImEiOiJjam13ZHlxbXgwdncwM3FvMnJjeGVubjI5In0.-ridMV6bkkyNhbPfMJhVzw';
var map = L.map('map').setView([37.7701177, -122.40], 13);
mapLink =
'<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer(
'https://api.mapbox.com/styles/v1/mapbox/dark-v9/tiles/{z}/{x}/{y}?access_token=' + L.mapbox.accessToken, {
tileSize: 512,
zoomOffset: -1,
attribution: '© <a href="https://www.mapbox.com/feedback/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);

// Read in the json data
d3.json("data/SanFrancisco_CoWorkingTenants.json",
function(SFData) {
var SFData = SFCoworking.features
console.log(SFData) // this prints successfully
})


var mapSVG = d3.select( "#map").select("svg")
mapG = mapSVG.append("g");

// Define d3 projection
var albersProjectionBay = d3.geoAlbers()
.scale( 282000)
.rotate ( [122.4077441,] )
.center( [0, 37.7701177] )

// Define d3 path
var geoPathBayArea = d3.geoPath()
.projection( albersProjectionBay );


var SFData = SFCoworking.features
console.log(SFData)

// draw points on map with d3 path generator
var feature = mapG.selectAll("path")
.data(SFCoworking.features)
.enter().append("path")
.style("stroke", "black")
.style("opacity", .6)
.style("fill", "red")
.attr("r", 20)
.attr( "d", geoPathBayArea )
console.log(feature) // nothing prints!

}

虽然 SFdata 出现在控制台中,但这些特征在打印到控制台时仅显示为空数组。这让我相信我将 svg 元素附加到 map 的方式可能存在问题?

最佳答案

谢谢大家 - 这似乎有效。

        var svgLayer = L.svg();
svgLayer.addTo(map);

var svgMap = d3.select("#map").select("svg");
var g = svgMap.select('g');

d3.json("data/SanFrancisco_CoWorkingTenants.json", function(SFData) {
var SFData = SFCoworking.features
console.log(SFData)
})
SFData.forEach(function(d) {
d.latLong = new L.LatLng(d.properties.Latitude,
d.properties.Longitude);
//console.log(d.LatLng)
})
var feature = g.selectAll("circle")
.data(SFData)
.enter().append("circle")
.style("stroke", "black")
.style("opacity", .4)
.style("fill", "red")
.attr("r", 20)
.attr("class", 'features')

关于javascript - 无法将 d3 向量附加到传单 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52709908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com