这是我在eclipse中的代码,当我放大地图并点击我的图钉(Marker
)时,它不会指向我的纬度和经度,而是移动到不同的位置。
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.flat(true);
markerOptions.anchor(0.5f, 0.5f);
markerOptions.icon(BitmapDescriptorFactory
.fromResource(R.drawable.pin_client_org));
markerOptions.title(getResources().getString(
R.string.text_source_pin_title));
markerOptions.position(
new LatLng(latLng.latitude,
latLng.longitude));
markerSource = map.addMarker(markerOptions);
private void setMarker(LatLng latLng, boolean isSource) {
if (!MapFragment.this.isVisible())
return;
if (getActivity() != null && getActivity().getCurrentFocus() != null) {
// inputMethodManager.hideSoftInputFromWindow(getActivity()
// .getCurrentFocus().getWindowToken(), 0);
activity.hideKeyboard();
}
if (latLng != null && map != null) {
if (isSource) {
if (markerSource == null) {
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.flat(true);
markerOptions.anchor(0.5f, 0.5f);
markerOptions.icon(BitmapDescriptorFactory
.fromResource(R.drawable.pin_client_org));
markerOptions.title(getResources().getString(
R.string.text_source_pin_title));
markerOptions.position(
new LatLng(latLng.latitude,
latLng.longitude));
markerSource = map.addMarker(markerOptions);
//markerSource.setDraggable(false);
} else {
markerSource.setPosition(latLng);
}
CameraUpdateFactory.newLatLng(latLng);
} else {
if (markerDestination == null) {
MarkerOptions opt = new MarkerOptions();
opt.position(latLng);
opt.title(getResources().getString(
R.string.text_destination_pin_title));
opt.icon(BitmapDescriptorFactory
.fromResource(R.drawable.destination_pin));
markerDestination = map.addMarker(opt);
markerDestination.setDraggable(true);
if (markerSource != null) {
LatLngBounds.Builder bld = new LatLngBounds.Builder();
bld.include(new LatLng(
markerSource.getPosition().latitude,
markerSource.getPosition().longitude));
bld.include(new LatLng(
markerDestination.getPosition().latitude,
markerDestination.getPosition().longitude));
//LatLngBounds latLngBounds = bld.build();
//map.moveCamera(CameraUpdateFactory.newLatLngBounds(
// latLngBounds, 30));
} else {
CameraUpdateFactory.newLatLng(latLng);
}
} else {
markerDestination.setPosition(latLng);
}
}
getAddressFromLocation(markerSource.getPosition(), etSource);
} else {
Toast.makeText(getActivity(), getResources().getString(
R.string.unable_location),
Toast.LENGTH_LONG).show();
}
}
super.onActivityCreated(savedInstanceState);
// activity.layoutDestination.setVisibility(View.VISIBLE);
// activity.tvTitle.setVisibility(View.GONE);
activity.btnNotification.setVisibility(View.VISIBLE);
activity.tvTitle.setVisibility(View.VISIBLE);
activity.setIcon(R.drawable.fare_info);
activity.setTitle(getString(R.string.text_make_request));
activity.btnNotification.setOnClickListener(this);
// etSource = activity.etSource;
// activity.imgClearDst.setOnClickListener(this);
adapter=new PlacesAutoCompleteAdapter(activity, R.layout.autocomplete_list_text);
adapterDestination=new PlacesAutoCompleteAdapter(activity, R.layout.autocomplete_list_text);
etSource.setAdapter(adapter);
locHelper=new LocationHelper(activity);
locHelper.setLocationReceivedLister(this);
etDestination.setAdapter(adapterDestination);
etSource.setOnClickListener(new OnClickListener() {
@Override
public void onClick (View v){
etSource.setText("");
layoutMarker.setVisibility(View.GONE);
if (sendReqLayout.getVisibility() == View.VISIBLE) {
cancelConfirmation();
}
}
});
etSource.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange (View v,boolean hasFocus){
// TODO Auto-generated method stub
if (hasFocus) {
etSource.setText("");
layoutMarker.setVisibility(View.GONE);
if (sendReqLayout.getVisibility() == View.VISIBLE) {
cancelConfirmation();
}
}
}
});
etSource.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick (AdapterView < ? > arg0, View arg1,int arg2, long arg3){
final String selectedDestPlace = adapter.getItem(arg2);
new Thread(new Runnable() {
@Override
public void run() {
final LatLng latlng = getLocationFromAddress(selectedDestPlace);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
isMapTouched = true;
curretLatLng = latlng;
isSource = true;
map.clear(); //25-02-2016
setMarker(curretLatLng, isSource);
//setMarkerOnRoad(curretLatLng, curretLatLng);
animateCameraToMarker(curretLatLng, true);
stopUpdateProvidersLoaction();
getAllProviders(curretLatLng);
}
})
}
})
});
});
这就是我的代码。请帮我理解这个模糊的问题。
答案 0 :(得分:1)
地图的问题是,当您滚动地图时,它会更改位置,只要您点按地图上的任意位置,您的点击就不会响应它应该的位置,因此您只需设法阻止地图滚动。
应该解决你的问题。