2016-01-05 5 views
1

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

Как для Android

Там автоматически добавляются текущая кнопка расположение

enter image description here

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

Однако Что касается 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, 
    }); 

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 map по умолчанию отображается текущая кнопка местоположения (стрелка) слева вниз.


Благодаря комментарию.

Моя первая идея неправильная. '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

Сейчас он работает хорошо, спасибо за вашу помощь.

+0

Это другая кнопка является тот, который вы ищете. Один на android является родным для карт Google. Поэтому ответ Джона на самом деле прав. –

+0

А, я вижу, эта кнопка является родной только для android, не так ли? Поэтому мне нужно сделать еще одну кнопку, которая перескакивает на текущее местоположение пользователя? – whitebear

ответ

3

При создании карты вам необходимо установить дополнительное свойство:

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

Это должно сделать трюк ;-)

/John

+0

Спасибо за ваш ответ !, У меня есть некоторые вопросы. – whitebear

+0

Это будет вид SATELLITE_TYPE. Нельзя добавить кнопку currentlocation в обычную карту ?. Даже я добавляю этот код userLocation не появляется, MapModule.SATELLITE_TYPE является опечаткой Map.SATELLITE_TYPE ?? – whitebear

+0

Я добавил исходный код в статью. – whitebear