Android 搜索街道并在谷歌地图上显示标记。漂走的标记
我编写了教程以在谷歌地图中搜索地址。 不幸的是,当我行尸走肉的时候,记号笔没有粘在那个地方。 似乎那个标记正在漂移Android 搜索街道并在谷歌地图上显示标记。漂走的标记,android,google-maps,Android,Google Maps,我编写了教程以在谷歌地图中搜索地址。 不幸的是,当我行尸走肉的时候,记号笔没有粘在那个地方。 似乎那个标记正在漂移 class MapOverlay extends com.google.android.maps.Overlay { public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow
class MapOverlay extends com.google.android.maps.Overlay {
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
// translate the GeoPoint to screen pixels
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
// add the red marker
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker_red);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-32, null);
return true;
}
}
我认为它来自于将地理点转换成屏幕像素
以下是搜索按钮onClick事件的代码:
this.searchButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
followMe = false;
String temp = searchBar.getText().toString();
List<Address> addresses = null;
try {
addresses = geoCoder.getFromLocationName(temp,5);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (addresses != null) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mapController.animateTo(p);
mapController.setZoom(19);
MapOverlay mapOverlay = new MapOverlay();
mapOverlays = mapView.getOverlays();
mapOverlays.add(mapOverlay);
mapView.postInvalidate();
//searchBar.setText("");
} else {
AlertDialog.Builder adb = new AlertDialog.Builder(
GMapsSubActivity.this);
adb.setTitle("Google Map");
adb.setMessage("Please Provide the Proper Place");
adb.setPositiveButton("Close", null);
adb.show();
}
}
});
this.searchButton.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
//TODO自动生成的方法存根
followMe=假;
String temp=searchBar.getText().toString();
列表
http://i.imgur.com/dFqIs.jpg我不知道我是否正确理解了你的代码……但作为一个一般性的回答:当你把一个位置分布在几个瓷砖上时,你不能直接使用纬度和经度值。这是因为地球(不知何故)是一个球体当使用线性贴图分幅并使用相同的线性平移值放大/缩小时,会出现一些不准确的情况
有几种算法结合了这种球形失真,我个人认为是“偷来的”来自的GeoUtils类中的一些有用的代码发生这种情况时internet是打开还是关闭的?您确认了地理点坐标没有更改吗?不,很快就会更改!添加了相同的问题图片。解决了它!我编写了canvas.drawBitmap(bmp,screenPts.x-(bmp.getWidth()/2),screenPts.y-bmp.getHeight(),new Paint());而不是canvas.drawBitmap(bmp,screenPts.x,screenPts.y-32,null);是的,Projection类就是为了解决这个古老的“幻数”问题。它知道平铺上必须有什么像素/地理坐标。