gpt4 book ai didi

android - 在android中滚动谷歌地图v2时获取 map 中心点?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:47 28 4
gpt4 key购买 nike

您好,我正在做一个应用程序,在我的应用程序中有一个 map 页面,所以我实现了 Google Maps V2,我遇到了一个问题,当我滚动 map 时,我想获得 map 的中心点,如果我滚动 map ,我离开它然后它得到 map 的中心点所以任何人都可以建议解决这个问题它可能会有所帮助提前谢谢你......

注意:我使用过 Google Maps V2,所以请发布相关信息。

public class Mapview extends FragmentActivity implements OnMapClickListener, OnCameraChangeListener{

final int RQS_GooglePlayServices = 1;
private GoogleMap myMap;
Location myLocation;
TextView tvLocInfo;
GPSTracker gps;
public double Latitude,Longitude;
String Datetime, addr,RegUID;
public String lat,longd;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);

tvLocInfo = (TextView)findViewById(R.id.locinfo);

FragmentManager myFragmentManager = getSupportFragmentManager();
SupportMapFragment mySupportMapFragment = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);

myMap = mySupportMapFragment.getMap();

myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
myMap.setMyLocationEnabled(true);
myMap.setOnMapClickListener(this);
Projection P = myMap.getProjection();
Log.e("lat", String.valueOf(Latitude));
Log.e("lat", String.valueOf(Longitude));
Button mDone = (Button) findViewById(R.id.button1);
mDone.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SimpleDateFormat")
public void onClick(View v) {

//Toast.makeText(getBaseContext(), "latitude"+lat+""+"longitude"+longd , Toast.LENGTH_LONG).show();
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
Datetime = timeStamp.toString();
Log.e("t", Datetime);
RegUID = Utils.RegisterUserId;
Log.e("t", RegUID);
final ProgressDialog dialog = ProgressDialog.show(Mapview.this, "", Utils.Loading, true);
dialog.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@SuppressWarnings("unused")
public void run()
{
try
{
String EMPLOYEE_SERVICE_URI = Utils.Request+"UserID="+RegUID+"&Location="+URLEncoder.encode(addr,"UTF-8")+"&Latitude="+lat+"&Longitude="+longd+"&RequestDate="+URLEncoder.encode(Datetime,"UTF-8");
Log.e(EMPLOYEE_SERVICE_URI, EMPLOYEE_SERVICE_URI);
JSONObject JObject = Utils.getResult(EMPLOYEE_SERVICE_URI);
//Toast.makeText(Mapview.this,JObject.toString(), Toast.LENGTH_LONG).show();
if(JObject!=null)
{

if(JObject.getBoolean("Valid"))
{

AlertDialog alertDialog = new AlertDialog.Builder(Mapview.this).create();
Utils.callAlert(JObject.getString("Message"), alertDialog);

}
else
{
AlertDialog alertDialog = new AlertDialog.Builder(Mapview.this).create();
Utils.callAlert(JObject.getString("Message"), alertDialog);
}

}
else
{
AlertDialog alertDialog = new AlertDialog.Builder(Mapview.this).create();
Utils.callAlert(JObject.getString("Message"), alertDialog);
}
}
catch (Exception e)
{
//Toast.makeText(Mapview.this,e.toString(), Toast.LENGTH_LONG).show();
Log.e("Exception", e.toString());
}
dialog.dismiss();
}//run() ends
}, 5000);


}
});


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();

int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());

if (resultCode == ConnectionResult.SUCCESS){
Toast.makeText(getApplicationContext(),
"isGooglePlayServicesAvailable SUCCESS",
Toast.LENGTH_LONG).show();
}else{
GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
}

}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.i("test","onScroll");
return false;
}
@Override
public void onMapClick(LatLng point) {
Log.e("lat", String.valueOf(point.latitude));
Log.e("lat", String.valueOf(point.longitude));
Latitude =point.latitude;
Longitude = point.longitude;
lat = String.valueOf(point.latitude);
longd = String.valueOf(point.longitude);
myMap.moveCamera(CameraUpdateFactory.newLatLng(point));
gps = new GPSTracker(Mapview.this);
// check if GPS enabled
if(gps.canGetLocation())
{

Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(Latitude, Longitude, 1);
if(addresses != null) {
Address returnedAddress = addresses.get(0);
StringBuilder strReturnedAddress = new StringBuilder("");
for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
}
addr = new String(strReturnedAddress);
tvLocInfo.setText(addr.toString());

//Toast.makeText(getApplicationContext(), addr.toString(),Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "Gps location address is unavailable please try again later",
Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}
}
}

@Override
public void onCameraChange(CameraPosition arg0) {
// TODO Auto-generated method stub

}

}

最佳答案

您可以使用:-

myMap.setOnCameraChangedListener(this);

在监听器中:-

onCameraChange(CameraPosition position) {
LatLng target = position.target;
// do what you need with the position here
}

我不确定索引是否越界。但是要设置默认 map 位置,您可以使用如下内容:-

    private void setDefaultMapPosition(LatLng latLng) {

CameraPosition camPos =
new CameraPosition.Builder().target(latLng)
.zoom(A_DEFAULT_MAP_ZOOM)
.bearing(0)
.tilt(0)
.build();

myMap.moveCamera(
CameraUpdateFactory.newCameraPosition(camPos));

}

关于android - 在android中滚动谷歌地图v2时获取 map 中心点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15847631/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com