2013-01-02 71 views

回答

0

使用适用于获得当前位置

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
    Criteria criteria = new Criteria(); 
    String provider = locationManager.getBestProvider(criteria, false); 
Location location = locationManager.getLastKnownLocation(provider); 

if (location != null) { 
        System.out.println("Provider " + provider + " has been selected."); 
        onLocationChanged(location); 
        } 

Geocoder geocoder = new Geocoder(ViewTestDrive.this, Locale.getDefault()); 
       List<Address> addresses = null; 

       try { 
        addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); 
       } catch (IOException e) { 
        e.printStackTrace(); 
        // Update address field with the exception. 
        //Message.obtain(mHandler, UPDATE_ADDRESS, e.toString()).sendToTarget(); 
       } 
       String addressText = null; 
       if (addresses != null && addresses.size() > 0) { 
        Address address = addresses.get(0); 
        // Format the first line of address (if available), city, and country name. 
        addressText = String.format("%s, %s, %s", 
          address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "", 
          address.getLocality(), 
          address.getCountryName()); 
        // Update address field on UI. 
        //Message.obtain(mHandler, UPDATE_ADDRESS, addressText).sendToTarget(); 
       } 


       Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
         Uri.parse("http://maps.google.com/maps?saddr="+addressText+"&daddr="+)); 
       intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");   
       startActivity(intent); 


@Override 
public void onLocationChanged(Location location) { 
    int lat = (int) (location.getLatitude()); 
    int lng = (int) (location.getLongitude()); 
    String.valueOf(lat); 
    String.valueOf(lng); 

} 


@Override 
public void onProviderDisabled(String provider) { 
    Toast.makeText(this, "Disabled provider " + provider, 
      Toast.LENGTH_SHORT).show(); 

} 


@Override 
public void onProviderEnabled(String provider) { 
    Toast.makeText(this, "Enabled new provider " + provider, 
      Toast.LENGTH_SHORT).show(); 

} 


@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 
+0

这只能回答一半的海报问题。我更感兴趣的是如何绘制地图顶部的箭头,使它动起来(即不是标记),并使其与用户位置保持同步,即使在地图滚动时也是如此。 – gsysko

+0

我不认为这回答了这个问题。问题重点在于实现蓝色箭头,就像官方Google Maps应用程序本身的蓝色箭头一样 – ericn

0

(对不起,我来不及回答,希望你能在这时间解决了这个问题。)

您可以自定义的方式标记应该以一些简单的步骤出现。 以下是实现此目的所需的代码部分。

//You need a GoogleMap object to deal with the map functionality. 
private GoogleMap map; 
... 
//Find Your Map view from layout 
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
//This method will do the rest needed 
showMarker(userLatitude, userLongitude) 
... 
... 
// Pass the desired latitude and longitude to this method 
public void showMarker(Double lat, Double lon) { 
    map.clear(); 
    // Create a LatLng object with the given Latitude and Longitude 
    LatLng markerLoc = new LatLng(lat, lon); 

    //Add marker to map 
    map.addMarker(new MarkerOptions() 
      .position(markerLoc)                  // at the location you needed 
      .title("Desired Title")                  // with a title you needed 
      .snippet("Any summary if needed")               // and also give some summary of available 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.your_flashing_arrow_anim_drawable))); // and give your animation drawable as icon 
} 

// To work these functionalities, you may require the following imports 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

最后的布局应包含类似这样的条目MAP

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" /> 

希望这将解决一些其他问题太... :)

0

获得像我们在默认情况下,或通过在Android的API在谷歌的谷歌地图应用中看到的蓝色箭头根据this post是不可能的。我得出这样的结论:我们可能会为了这个特殊功能而自行设置。只是我2美分。

相关问题