如何在Ti.map上的苹果地图上添加“当前位置按钮”(导航标记)

时间:2016-01-05 04:45:12

标签: titanium apple-maps

我正在使用Ti.map作为我的钛iOS / android

至于Android

自动添加当前位置按钮

enter image description here

(我不确定这个按钮是什么叫,所以我现在称之为“当前位置按钮”。

然而,至于iOS,

当前位置按钮不会自动添加。

有没有办法在苹果地图上添加这个按钮?

这些是我的代码。

    var mapView = Map.createView({
        mapType:Map.NORMAL_TYPE,
        userLocation:true,
        region: {latitude:35.699058, longitude:139.326099,    
        latitudeDelta:0.01, longitudeDelta:0.01},
        animate:false,
        regionFit:true,
        userLocation:true,
    });

我阅读了this文章并找到了。

  -   To use the `userLocation` property in iOS 8 and later, add either the
        [`NSLocationWhenInUseUsageDescription`](https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW26)
        or
        [`NSLocationAlwaysUsageDescription`](https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW18)
        key to the iOS plist section of the project's `tiapp.xml` file.
            <ti:app>
                <ios>
                    <plist>
                        <dict>
                            <key>NSLocationAlwaysUsageDescription</key>
                            <string>
                                Specify the reason for accessing the user's location information.
                                This appears in the alert dialog when asking the user for permission to
                                access their location.
                            </string>
                        </dict>
                    </plist>
                </ios>
            </ti:app>

所以我在tiapp.xml中添加了这个,并且正确显示了提示警告。

但是,仍然没有出现当前位置按钮。

在iOS的默认Apple地图应用程序中,左下方有当前位置按钮(箭头标记)。

感谢评论。

我的第一个想法是错误的。 'userLocation:true'与我称之为'当前位置按钮'的按钮

无关

所以我手动创建另一个按钮并连接Ti.Geolocation。

var locationButton = Ti.UI.createButton({
        backgroundImage:'/images/check.png',
        right:'15dp',width:'32dp',height:'32dp'
    });
    mapView.add(locationButton);
    locationButton.addEventListener('click',function(){
        Ti.API.info("get current location");    
         if (Ti.Geolocation.locationServicesEnabled) {
            Titanium.Geolocation.getCurrentPosition(function(e) {
                if (e.error) {
                    Ti.API.error('Error: ' + e.error);
                } else {
                    Ti.API.info(e.coords);
                    mapView.setLocation({
                        latitude:e.coords.latitude, longitude:e.coords.longitude, animate:false,
                        latitudeDelta:0.01, longitudeDelta:0.01
                    });
                }
            });
        } else {
            alert('Please enable location services');
        }
    });

enter image description here

现在它运作良好,感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

创建地图时,您需要设置一个额外的属性:

require('ti.map').createView({mapType:MapModule.SATELLITE_TYPE, userLocation:true});

应该这样做; - )

/约翰