Как добавить «кнопку текущего местоположения» (навигационную метку) на карту Apple на Ti.map

Я использую Ti.map для своей титановой iOS/android.

Что касается Android

Автоматически добавляется кнопка текущего местоположения

введите здесь описание изображения

(Я не уверен, как называется эта кнопка, поэтому пока я называю ее «кнопкой текущего местоположения».

Однако, что касается iOS,

кнопка текущего местоположения не добавляется автоматически.

Есть ли способ добавить эту кнопку на карту Apple??

Это мои коды.

    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,
    });

Я прочитал эту статью и нашел.

  -   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, и быстрое оповещение отображается правильно.

Однако кнопка текущего местоположения по-прежнему не отображается.

В приложении Apple Map по умолчанию для 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');
        }
    });

введите здесь описание изображения

Теперь все работает хорошо, спасибо за помощь.


person whitebear    schedule 05.01.2016    source источник
comment
Эта другая кнопка — та, которую вы ищете. Тот, что на андроиде, родной для карт Google. Так что ответ Джона действительно правильный.   -  person Rene Pot    schedule 06.01.2016
comment
А, я вижу, эта кнопка родная только для андроида, верно? Итак, мне нужно сделать еще одну кнопку, которая переходит к текущему местоположению пользователя?   -  person whitebear    schedule 06.01.2016


Ответы (1)


Когда вы создаете карту, вам нужно установить дополнительное свойство:

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

Это должно делать свое дело ;-)

/Джон

person John Dalsgaard    schedule 05.01.2016
comment
Спасибо за ответ! У меня есть несколько вопросов. - person whitebear; 06.01.2016
comment
Это будет представление SATELLITE_TYPE. Невозможно добавить кнопку currentlocation на карту нормалей?. Даже я добавляю этот код, кнопка userLocation не появляется, MapModule.SATELLITE_TYPE — это опечатка Map.SATELLITE_TYPE?? - person whitebear; 06.01.2016
comment
Спасибо за подсказку, я понял, как интегрировать то, что хочу. - person whitebear; 06.01.2016
comment
@whitebear: Да, вы можете использовать любой тип карты, какой захотите. Это был просто пример, который я скопировал в своем коде. Извините, я не указал на это :-) - person John Dalsgaard; 06.01.2016