2010-11-08 6 views
0

J'écris une démo mapview en Titanium (iPhone). Voici le code que je reçois de KitchenSink:La carte ne correspond pas à MapView of Titanium lors de l'événement catch 'regionChanged'

var win = Titanium.UI.currentWindow; 
var annotation = Titanium.Map.createAnnotation({ 
    latitude:42.334537, 
    longitude:-71.170101, 
    title:"Boston College", 
    subtitle:'Newton Campus, Chestnut Hill, MA', 
    animate:true, 
    leftButton:'../images/atlanta.jpg' 
}); 

var boston = {latitude:42.334537,longitude:-71.170101,latitudeDelta:0.010, longitudeDelta:0.018}; 

// 
// CREATE MAP VIEW 
// 
var mapview = Titanium.Map.createView({ 
    mapType: Titanium.Map.STANDARD_TYPE, 
    region: boston, 
    animate:true, 
    regionFit:true, 
    userLocation:true, 
    annotations:[annotation] 
}); 

win.add(mapview); 

Il fonctionne bien sur les deux iPhone Simulator, ainsi que dans le téléphone réel. Le problème est que, lorsque j'attrape l'événement 'regionChanged', la région de la carte est fausse. Mon code est:

var win = Titanium.UI.currentWindow; 

var annotation = Titanium.Map.createAnnotation({ 
    latitude:42.334537, 
    longitude:-71.170101, 
    title:"Boston College", 
    subtitle:'Newton Campus, Chestnut Hill, MA', 
    animate:true, 
    leftButton:'../images/atlanta.jpg' 
}); 

var boston = {latitude:42.334537,longitude:-71.170101,latitudeDelta:0.010, longitudeDelta:0.018}; 

// 
// CREATE MAP VIEW 
// 
var mapview = Titanium.Map.createView({ 
    mapType: Titanium.Map.STANDARD_TYPE, 
    region: boston, 
    animate:true, 
    regionFit:true, 
    userLocation:true, 
    annotations:[annotation] 
}); 

win.add(mapview); 

// map view click event listener 
mapview.addEventListener('regionChanged',function(evt) 
{ 

}); 

Dans cet événement, je n'ai même rien écrit. Dans Simulator, cela fonctionne bien comme le premier cas, mais dans le vrai téléphone, le niveau de zoom de la carte est soudainement maximal. Bien que je mette latitudeDelta = 1, le niveau de zoom de la carte est toujours zoom-in maximum comme si latitudeDelta = 0.001.

Alors, quelle est la racine de ce bug? Est-ce que quelqu'un peut m'aider?

+0

Voulez-vous dire que cela fonctionne dans le simulateur mais pas sur le vrai appareil? La fin de la question commence à devenir confuse –

+0

ah oui, dans la situation 2, le zoom mapview dans le simulateur est correct. Mais le problème se produit dans le périphérique réel dans le dernier cas. Je viens d'éditer la question pour éviter les malentendus. – anticafe

Répondre

2

OK. J'ai trouvé la racine de ce bug. Juste besoin de définir regionFit:true et le niveau de zoom de la carte est correct.

Questions connexes