我有一个椭圆形的数据集,更具体地说是椭圆形的“信封”。我想知道是否有人建议我如何在D3地图上绘制这些图形。我已经有一个带有墨卡托投影的地图设置。这个stackoverflow答案有一个createEllipse函数,它使我关闭了,但是我想确保我正确地解释了数据。
我从数据中插入了椭圆的长/短轴值,并使用了旋转的方位角,这是正确的吗?我也不太了解“信封”部分。每个区域中的几个椭圆如何形成一个连续的形状?
任何意见,将不胜感激。
const margin = {top:0, right:0, bottom:0, left:0},
width = 1000 - margin.left - margin.right,
height = 800 - margin.top - margin.bottom;
const svg = d3.select('body')
.append('svg')
.attr('width', '100%')
.attr('height', '100%')
.attr('viewBox', `0 0 ${width + margin.left + margin.right} ${height + margin.top + margin.bottom}`);
const chart = svg.append('g')
.attr('transform', `translate(${margin.left},${margin.top})`);
//a/b are ellipse axes, x/y is center
const createEllipse = function createEllipse(a, b, x = 0, y = 0, rotation = 0) {
let k = …Run Code Online (Sandbox Code Playgroud)假设我知道两点:x1,y1和x2,y2.我知道我可以很容易地用毕达哥拉斯计算这条线的长度,但如果我想计算一条缩短版本的线怎么办呢.例如,我希望x,y坐标朝向下一个点10个像素.有没有一个简单的公式来找到一个有角度的线上的任何新点?
好的,这是作为JavaScript函数的解决方案.为了解释的目的,我故意将这个额外的冗长.如下面的评论所示,您必须首先找到角度,然后用新的斜边计算边.

/**
* Calculates length of a line on Cartesian grid, then returns point that is X number of pixels down the line.
*
* @param {Number} fromX - starting x point
* @param {Number} fromY - starting y point
* @param {Number} toX - ending x point for vector
* @param {Number} toY - ending y point for vector
* @param {Number} pxDistance - Number of pixels down line toward ending point to return
* @return {Object} Returns …Run Code Online (Sandbox Code Playgroud) 好的,我完全卡住了.我真的希望有人可能有使用Vimeo的Froogaloop API加载Vimeo视频的经验.
我似乎无法抓住"准备好"的事件.
Froogaloop:
<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的剧本:
$.getJSON('http://www.vimeo.com/api/oembed.json?url=' + encodeURIComponent('http://vimeo.com/27027307') + '&width=300&callback=?', function(data){
$('#video-container').html(data.html); //puts an iframe embed from vimeo's json
$('#video-container iframe').ready(function(){
player = document.querySelectorAll('iframe')[0];
$f(player).addEvent('ready', function(id){
console.log('success');
});
});
});
Run Code Online (Sandbox Code Playgroud)
视频加载正常.这是我在控制台中收到的消息:
Uncaught TypeError: Cannot read property 'ready' of undefined
Run Code Online (Sandbox Code Playgroud)
我需要使用事件监听器来检测暂停等.我看到这篇文章,但不幸的是,主要区别在于我是通过JSON动态加载的.此外,Vimeo有一个运行 Froogaloop的实例,但不是jQuery.
提前致谢!!!
编辑: entry.content.$t访问单个单元格是错误的字段.entry.gsx $ [ cell column header ]是正确的方法.抱歉并感谢您帮助解决这个问题.
原始问题:
我正在尝试解析Google电子表格中的JSON数据.问题是,entries字段返回一个字符串,该字符串是电子表格的整行 - 但显示为格式错误的对象.其他人如何解析这些数据?以下是内容节点的外观:
"content":
{
"type" :"text",
"$t" :"location: 780 Valencia St San Francisco, CA 94110,
phonenumber: (555) 555-5555,
website: http://www.780cafe.com,
latitude: 37.760505,
longitude: -122.421447"
},
Run Code Online (Sandbox Code Playgroud)
仔细查看,该$t字段会返回整个字符串,该字符串是Google电子表格中的一行.所以entry.content.$t返回一个字符串:location: 780 Valencia St San Francisco, CA 94110, phonenumber: (555) 555-5555...
进一步加剧这个问题的是电子表格中的一些单元格具有逗号(如地址),这些逗号不会被转义或引用.就像是
jQuery.parseJSON(entry.content.$t)
Run Code Online (Sandbox Code Playgroud)
要么
eval('('+ entry.content.$t + ')')
Run Code Online (Sandbox Code Playgroud)
抛出错误.我认为正则表达式是一种选择,但我希望其他人可能以更优雅的方式解决这个问题.谢谢您的帮助!
javascript ×3
d3.js ×1
froogaloop ×1
geometry ×1
geospatial ×1
google-api ×1
jquery ×1
json ×1
trigonometry ×1
vimeo ×1