0

TitaniumAppceleratorを使用してマップベースのアプリを作成しました。ユーザーの現在地を地図上に表示しています。また、地図上に表示するためにユーザーの希望する場所を取得するテキストボックスもあります。地図上の特定の場所を表示するために、注釈とその正常な動作を使用しました。問題は、テキストボックスの値が変更されると、マップ上に別の注釈が作成されることです。私がやりたいのは、新しい注釈を付ける前に、以前の注釈をクリアしたいということです。私のapp.jsファイルを以下に示します。

app.js:

//create the window
var win1 = Titanium.UI.createWindow({
title:'Exercise Tracker',
backgroundColor: '#000'
});
//goto location label
var location_label = Titanium.UI.createLabel({
left:'10',
top:'20',
text:'Go to: ',
font:{fontSize:20}
})
//goto location textbox
var location_textbox= Titanium.UI.createTextField({
top: '15',
left: '85',
width: '300',
height: '50',

})
//go button
var btnGo=Ti.UI.createButton(
    
    {           
        top:'15',
        left:'420',
        width:'50',
        height:'50',
        title:"Go"
    })


//create our mapview
var mapview = Titanium.Map.createView({
top: 110,
height: 'auto',
width: 'auto',
mapType: Titanium.Map.STANDARD_TYPE,
region: {latitude: 51.50015,
longitude:-0.12623,
latitudeDelta:0.5,
longitudeDelta:0.5},
animate: true,
regionFit: true,
userLocation: true,

});
// to get values from both the textbox      
btnGo.addEventListener('click', function (e){
//var addr=location_textbox.value;

var addr="";
addr = location_textbox.value;
annote(addr);
});

// to refrsh the page on click textbox  
location_textbox.addEventListener('click', function (e){

});

//--------------------------annotations--------------------------------
//var addr = 'Howrah';
function annote(addr)
{
var addr_fw=addr; 
Titanium.Geolocation.forwardGeocoder(addr,function(evt) {
var objLocationAnnotation = Titanium.Map.createAnnotation({
    latitude: evt.latitude,
    longitude: evt.longitude,
    title: addr_fw
});
mapview.addAnnotation(objLocationAnnotation);
});
} 
//--------------------------annotations--------------------------------
//add the map to the window
win1.add(mapview);
//set the distance filter
Titanium.Geolocation.distanceFilter = 10;


Titanium.Geolocation.getCurrentPosition(function(e)
{
if (e.error)
{
//if mapping location doesn't work, show an alert
alert('Sorry, but it seems geo location is not available on your device!');
return;
}
//get the properties from Titanium.GeoLocation
var longitude = e.coords.longitude;
var latitude = e.coords.latitude;
var altitude = e.coords.altitude;
var heading = e.coords.heading;
var accuracy = e.coords.accuracy;
var speed = e.coords.speed;
var timestamp = e.coords.timestamp;
var altitudeAccuracy = e.coords.altitudeAccuracy;
//apply the lat and lon properties to our mapview
mapview.region = {latitude: latitude,
longitude: longitude,
latitudeDelta:0.5,
longitudeDelta:0.5
};
});
//finally, open the window
win1.open();
//adding display properties to the main window      
win1.add(location_label);
win1.add(location_textbox);
win1.add(btnGo); 
4

2 に答える 2

3

mapView.removeAnnotation を使用する String/Titanium.Map.Annotation annotation

マップから既存の注釈を削除します。

詳細については、ここからドキュメントを参照してください。

http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Map.View-method-removeAnnotation

于 2012-11-30T13:09:07.453 に答える
0

変化する

mapview.addAnnotation(objLocationAnnotation);

mapview.annotations = [objLocationAnnotation];

これにより、マップビュー上のすべての注釈がクリアされ、それらが 1 つの新しい注釈の新しい配列に設定されます。

于 2012-08-29T11:38:26.347 に答える