2

我正在寻找一种将经度/纬度转换为相对于地图视图的像素的方法。基本上,我正在寻找类似于 Projection.toPixels() 的东西,如此所述。

我想要做的是以下内容:我需要添加带有背景图像和文本的注释,并且由于默认注释无法实现这样的功能,我必须以某种方式计算它们在地图视图中的位置并添加标签(作为孩子们的观点),而不是。

我花了将近一个星期的时间来处理它,但没有任何结果。

4

2 回答 2

0

我没有办法将 lat/lng 转换为像素,但我确实有办法获取注释上的图像和文本。这是一种“hackish”的方式,但它确实有效。基本上,您所做的就是创建一个自定义视图,其中包含您想要的任何内容。设置好视图后,对于注释的图像属性,将其设置为 yourCustomView.toImage()。

这是一个例子:

//Setup device size variables
var deviceWidth = Ti.Platform.displayCaps.platformWidth;
var deviceHeight = Ti.Platform.displayCaps.platformHeight;

//Create a new window
var w = Ti.UI.createWindow({
    width:deviceWidth,
    height:deviceHeight
})

//Create view for annotation
var annotationView = Ti.UI.createView({
    width:50,
    height:50,
    backgroundImage:'http://www.insanedonkey.com/images/bubble.png',
})

//Add text to the annotation view
var annotationText = Ti.UI.createLabel({
    width:'auto',
    height:'auto',
    text:'785k',
    font:{fontSize:12,fontWeight:'bold'},
    color:'#fff',
})
annotationView.add(annotationText);

//Create a new annotation
var newAnnotation = Titanium.Map.createAnnotation({
    latitude:36.134513,
    longitude:-80.659690,
    animate:true,
    image:annotationView.toImage() //Convert the annotationView to an image blob
});


var mapview = Titanium.Map.createView({
    region:{latitude:36.134513, longitude:-80.659690, latitudeDelta:0.0009,     longitudeDelta:0.0009},
    animate:true,
    regionFit:true,
    userLocation:true,
    annotations:[newAnnotation],
    mapType:Titanium.Map.STANDARD_TYPE,
    width:2000,
    height:2000

});

//Add the mapview to the window
w.add(mapview);

//Open the window
w.open();

我希望这会有所帮助。

于 2012-05-03T18:50:08.163 回答
0

注释上有一个属性来设置其图像和单击时将显示的标题(将鼠标悬停在其上)。看这里:

http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Map.Annotation-object

这不正是您想要的吗?

于 2012-04-23T14:45:34.630 回答