我试图将图片的部分内容(标记)与Android中的GPS相关联。
这些教程仅展示了如何获取当前位置。 http://developer.android.com/reference/android/webkit/GeolocationPermissions.html http://vinnysoft.blogspot.com/2009/10/location-manager-examples.html
这里的想法是:我正在制作一个有标记的地图应用程序。这些标记将具有与之相关的位置。
问题在于:我在将标记与位置关联方面遇到困难。获取当前位置(lat.long。)可以使用本教程完成。但是添加标记及其位置是问题所在。如何添加更多标记及其各自的位置?
这是代码
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class MainMap extends Activity {
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds
protected LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
TouchImageView image = (TouchImageView) findViewById(R.id.overview);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MINIMUM_TIME_BETWEEN_UPDATES,
MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
new MyLocationListener()
);
showCurrentLocation();
}
protected void showCurrentLocation() {
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
String message = String.format(
"Current Location \n Longitude: %1$s \n Latitude: %2$s",
location.getLongitude(), location.getLatitude()
);
Toast.makeText(MainMap.this, message,
Toast.LENGTH_LONG).show();
}
}
private class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
String message = String.format(
"New Location \n Longitude: %1$s \n Latitude: %2$s",
location.getLongitude(), location.getLatitude()
);
Toast.makeText(MainMap.this, message, Toast.LENGTH_LONG).show();
}
public void onStatusChanged(String s, int i, Bundle b) {
Toast.makeText(MainMap.this, "Provider status changed",
Toast.LENGTH_LONG).show();
}
public void onProviderDisabled(String s) {
Toast.makeText(MainMap.this,
"Provider disabled by the user. GPS turned off",
Toast.LENGTH_LONG).show();
}
public void onProviderEnabled(String s) {
Toast.makeText(MainMap.this,
"Provider enabled by the user. GPS turned on",
Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:0)
为此,我必须假设您的活动中包含GoogleMap对象以添加标记。
此外,我强烈建议您检查Android Dev website以设置Google Play服务不仅可以使用适用于Android的Google Maps API,还可以通过使用WiFi和服务提供商来改善位置检索使用GPS更快地锁定坐标。
完成后,相同的Maps API会将Marker对象添加到地图中。
它应该是这样的:
Marker mMarker = mGoogleMap.addMarker(
new MarkerOptions()
.position(new LatLng(knownLoc.getLatitude(), knownLoc.getLongitude())
.icon(...) //android dev website provides all details
...;
您有一个MarkerOptions类,可让您设置有关标记的所有内容。完成设置后,在GoogleMap对象中调用addMarker()方法,该方法将返回Marker对象。使用返回的Marker对象,您可以更新其位置,图标等。这样您就不必清理地图,并重新创建标记和所有其他对象以更新地图。
祝你好运,我仍然建议您浏览我建议的链接,以便为您的目的使用最新且最有效的代码。此外,它还详细解释了。