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

Posted

技术标签:

【中文标题】如何在 Ti.map 上的苹果地图上添加“当前位置按钮”(导航标记)【英文标题】:How to add 'current location button'(navigation mark) on apple map on Ti.map 【发布时间】:2016-01-05 04:45:12 【问题描述】:

我正在为我的钛金属 ios/android 使用 Ti.map

至于安卓

有自动添加当前位置按钮

(我不确定这个按钮叫什么,所以我暂时称它为“当前位置按钮”。

然而对于 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默认的苹果地图应用中,左下方有当前位置按钮(箭头标记)。


感谢评论。

我的第一个想法是错误的。 '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');
        
    );

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

【问题讨论】:

那个不同的按钮就是你要找的那个。 android上的那个是谷歌地图的原生。所以约翰的回答其实是正确的。 啊,我看到这个按钮是只有安卓的,对吧?所以我必须自己制作另一个跳转到当前用户位置的按钮? 【参考方案1】:

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

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

这应该可以解决问题 ;-)

/约翰

【讨论】:

感谢您的回复!我有一些问题。 它将是 SATELLITE_TYPE 视图。无法将当前位置按钮添加到法线贴图?即使我添加此代码 userLocation 按钮也没有出现,MapModule.SATELLITE_TYPE 是 Map.SATELLITE_TYPE 的错字?? 谢谢给我提示,我想出了如何整合我想要的东西。 @whitebear:是的,你可以使用任何你想要的 mapType。这只是我在代码中复制的示例。抱歉,我没有指出这一点:-)

以上是关于如何在 Ti.map 上的苹果地图上添加“当前位置按钮”(导航标记)的主要内容,如果未能解决你的问题,请参考以下文章

如何设置Xcode模拟器地图的当前位置

如何在 Android Marshmallow 上的 Google 地图上显示当前位置?

如何在不刷新整个地图的情况下更新谷歌地图上的标记位置?

Phonegap 苹果地图:从当前位置导航

如何在 ionic 2 应用程序中自动更新谷歌地图上的当前位置

android:无法在地图上添加当前位置