首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MapKit JS如何将变量的mapkit.Coordinates()赋值为数字

MapKit JS如何将变量的mapkit.Coordinates()赋值为数字
EN

Stack Overflow用户
提问于 2019-11-19 14:30:41
回答 1查看 169关注 0票数 0

我在Filemaker中使用MapKit JS,并且可以像这样从Filemaker中的输入中获取坐标。

代码语言:javascript
运行
复制
"const punkt = '" & Substitute ( MYMAP::longlat ; ¶ ; ", " ) & "';" & ¶ &

输入是例如:59.436549,10.629371,但我无法将其输入到mapkit定义中。我得到纬度和经度值,并确保它是一个数字。但是我需要逗号(,)。

代码语言:javascript
运行
复制
var punkt // this is 59.658985, 10.790869
var punktxy = punkt.split(",");
var x = parseFloat(punktxy[0]);
var x = parseFloat(punktxy[1);

当我硬编码时,它起作用了:

代码语言:javascript
运行
复制
new mapkit.Coordinate(59.658985, 10.790869)

但我搞错了。可能是因为当我像这样连接文本时,它是类型文本:

代码语言:javascript
运行
复制
new mapkit.Coordinate(x + ',' + y)

这也不起作用:

代码语言:javascript
运行
复制
new mapkit.Coordinate(x,y)

可能是一根绳子?怎样才能得到正确的值?这可能是一个javascript的基本问题,但我在这里迷路了。

以下是我的网页查看器代码,其中包括文本字段中的javascript。注意,我正在将x和y值放入javascript中。这就是我需要3个js文件的原因,因为我似乎做不到这一点:mapkit.Coordinate(59.658985, 10.790869)

网站浏览者:

//加载MapKit JS的具体实现“;”content= '“&MapKit&MapKit& GetLayoutObjectAttribute ( "map1.js”;“MapKit”)& ARTSFUNN::Lokalitet;& GetLayoutObjectAttribute (“map1.js”;“MapKit”)& ARTSFUNN::Lat & ",& ARTSFUNN::Long &GetLayoutObjectAttribute( "map2.js“);“内容”)& ARTSFUNN::Lat &“,& ARTSFUNN::Long & GetLayoutObjectAttribute ( "map3.js”;"content“);”;

map1.js:

代码语言:javascript
运行
复制
mapkit.init({
    authorizationCallback: done => {
        done(
            "<<$$JWT.TOKEN>>"
        );
    }
});
var punktxy = punkt.split(",");
var x = parseFloat(punktxy[0]);
var x = parseFloat(punktxy[1);
var xy = (x + ','+ y); // doesn't work

var MarkerAnnotation = mapkit.MarkerAnnotation,
            clickAnnotation;
var borch = new mapkit.CoordinateRegion(
            new mapkit.Coordinate(

map2.js:

代码语言:javascript
运行
复制
),
            new mapkit.CoordinateSpan(0.005, 0.005)
);

var map = new mapkit.Map('map');
map.region = borch;
map.mapType = "hybrid";

map.setCenterAnimated(new mapkit.Coordinate(

map3.js:

代码语言:javascript
运行
复制
), true); 
console.log(map);

update## -只是测试,现在这似乎是可行的!

在WebViewer中定义Lat和Long:

代码语言:javascript
运行
复制
"var x = '" & Substitute ( ARTSFUNN::Lat ; ¶ ; ", " ) & "';" & ¶ &
"var y = '" & Substitute ( ARTSFUNN::Long ; ¶ ; ", " ) & "';" & ¶ &

使用包含map.js中的值:

代码语言:javascript
运行
复制
var x = parseFloat(x);
var y = parseFloat(y);
// does not work if I don't convert to digit before use!
var bor = new mapkit.CoordinateRegion(
            new mapkit.Coordinate(x,y),
            new mapkit.CoordinateSpan(0.005, 0.005)
);

var map = new mapkit.Map('map');
map.region = bor;
map.mapType = "hybrid";
map.setCenterAnimated(new mapkit.Coordinate(x,y), true); 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-21 16:53:29

这并不是真正的答案(除非您的问题纯粹是关于"as位“部分),但我不能在评论中发布这么多代码。

在问题的开头,您使用了一个名为MYMAP::longlat的字段,该字段显然将两个坐标分隔为一个回车。使用Substitute()将返回替换为逗号。

现在您正在使用两个单独的字段,ARTSFUNN::LatARTSFUNN::Lon,但是仍然对这两个字段应用相同的Substitute操作。这似乎没有必要。

更重要的是,你在做:

代码语言:javascript
运行
复制
"var x = '" & Substitute ( ARTSFUNN::Lat ; ¶ ; ", " ) & "';" & ¶ &
"var y = '" & Substitute ( ARTSFUNN::Long ; ¶ ; ", " ) & "';" & ¶ & 

会产生如下结果:

代码语言:javascript
运行
复制
var x = '59.436549';
var y = '10.629371';

其中两个变量显然都是字符串,然后必须将其转换为数字。

我认为你应该做:

代码语言:javascript
运行
复制
"var x = " & ARTSFUNN::Lat & ";¶var y = " & ARTSFUNN::Long & ";¶" 

生产:

代码语言:javascript
运行
复制
var x = 59.436549;
var y = 10.629371;

然后,可由以下机构直接使用:

代码语言:javascript
运行
复制
new mapkit.Coordinate(x,y)

使用原始字段可以获得相同的结果:

代码语言:javascript
运行
复制
"var x = " & GetValue ( MYMAP::longlat ; 2 ) & ";¶var y = " & GetValue ( MYMAP::longlat ; 1 ) & ";¶" 

(假设经度是字段中列出的第一个值)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58936342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档