小编jru*_*rue的帖子

创建椭圆形信封数据的D3映射

我有一个椭圆形的数据集,更具体地说是椭圆形的“信封”。我想知道是否有人建议我如何在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)

javascript geospatial d3.js

16
推荐指数
1
解决办法
265
查看次数

在线查找点的新坐标

假设我知道两点: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)

javascript geometry trigonometry

10
推荐指数
1
解决办法
3531
查看次数

使用jQuery加载多个Vimeo视频并检测事件

好的,我完全卡住了.我真的希望有人可能有使用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.

提前致谢!!!

jquery vimeo froogaloop

6
推荐指数
2
解决办法
2万
查看次数

从Google电子表格中解析JSON

编辑: 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 json google-api google-sheets

6
推荐指数
1
解决办法
1万
查看次数