在NativeScript应用程序中添加标记到地图

时间:2017-01-30 09:30:13

标签: javascript google-maps nativescript

我正在使用nativescript-google-maps-sdk构建NativeScript个应用。

我为coordinateTapped事件添加了一个eventlistener,现在正在工作我想在地图上点击我点击的位置标记。

我无法在线或在sdk文档中找到此示例。 我觉得我很亲密,只是做了一些小修改。

var mapsModule = require("nativescript-google-maps-sdk");

function onCoordinateTapped(args) {
    console.log("coordinate tapped!");
    var mapView = args.object;
    var marker = new mapsModule.Marker();
    marker.position = mapsModule.Position.positionFromLatLng(args.latitude,args.longitude);
    mapView.addMarker(marker);
}

注意:我已使用google-maps标记标记了此问题,因为没有nativescript-google-maps标记。

2 个答案:

答案 0 :(得分:1)

嘿@Danoram你的代码看起来没什么问题,虽然没有XML文件我想你已经使用 coordinateEvent 来传递回退函数 onCoordinateTapped ,如here

<maps:mapView coordinateTapped="onCoordinateTapped" />

这对您有用还是您遇到某种错误/意外行为?从您的帖子中发现问题并不完全清楚......

答案 1 :(得分:0)

回答此类问题永远为时不晚。

问题是args对象没有latitudelongitude属性,因此您尝试添加经度和纬度为{{1}的标记}。

在函数undefined中,您可以访问两个不同的位置

首先,onCoordinateTapped(args)args.object.latitude

args.object.longitude

这些属性代表地图的当前位置(您知道它的中心)。

第二,var lat = args.object.latitude; var lng = args.object.longitude; args.position.latitude

args.position.longitude

在这种情况下,这些属性表示您在地图上实际点击的位置

此外,它在var lat = args.position.latitude; var lng = args.position.longitude; 上有效。