收藏
回答

Geo元素, 如果不new 一下,是不能用的?

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wx3b037b9673153a74 2.0.0

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


入坑经历与最后的困惑:


先看官方文档:

db.command.geoWithin

相关文档链接:click


按照文档测试,输入如下代码:

        location: _.geoWithin({
            geometry: Polygon([
                LineString([
                    Point(0, 0),
                    Point(100, 0),
                    Point(100, 50),
                    Point(0, 50)
                ])
            ]),
        })


云开发中,进行云端测试后,提示:


Point cannot be invoked without 'new'


坑1:Point不是官方文档那么用滴,我们不是一个世界。

回到真实,在所有的Geo元素前面都加了new:


location: _.geoWithin({
    geometry: new Polygon([
        new LineString([
            new Point(0, 0),
            new Point(100, 0),
            new Point(100, 50),
            new Point(0, 50)
        ])
    ]),
})


坑2:报错:

LineString is not a constructor

看来LineString 不是一回事啊,就不给你new了:


location: _.geoWithin({
    geometry: new Polygon([
        LineString([
            new Point(0, 0),
            new Point(100, 0),
            new Point(100, 50),
            new Point(0, 50)
        ])
    ]),
})


坑3:报错:

LineString is not a function


可是,我在上文进行了声明:

const {Point, LineString, Polygon} = db.Geo

难道db.Geo.LineString不是一个函数?

我进行检查:


console.log('是不是函数?',typeof(LineString))


结果  返回了如下:


是不是函数? undefined


发现:我的wx-server-sdk好久没更新了,还是0.1.3

更新到0.5.0后, LineString就是函数了.


geoWithin

也可用了.


tip:

geoWithin 后面跟的矢量,必须是闭环, 否则无法检索



请官员将文档注明一下版本号 另外,不new一下就不能用, 那也是文档有问题.




回答关注问题邀请回答
收藏

1 个回答

  • DomiDong
    DomiDong
    2019-05-17

    我试了半天了,终于找到答案了,赞!!!

    2019-05-17
    有用
    回复
登录 后发表内容