在单个图像上将GPS位置实现为标记

时间:2015-02-14 00:42:52

标签: android gps

我试图将图片的部分内容(标记)与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();
            }

        }

}

1 个答案:

答案 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对象,您可以更新其位置,图标等。这样您就不必清理地图,并重新创建标记和所有其他对象以更新地图。

祝你好运,我仍然建议您浏览我建议的链接,以便为您的目的使用最新且最有效的代码。此外,它还详细解释了。