【问题标题】:How to display directional marker like google map app does如何像谷歌地图应用一样显示方向标记
【发布时间】:2015-06-23 14:05:57
【问题描述】:

我一直在寻找这个但没有得到任何资源,我想在当前位置显示带有方向的标记,类似于谷歌地图应用程序。见附件(带方向的蓝色标记)

它叫什么?

请帮帮我,我已经创建了一张包含当前位置的地图。

活动代码

public class MainActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {

private GoogleMap map;

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

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.setMyLocationEnabled(true);
}

@Override
public void onLocationChanged(Location location) {
    map.clear();
    MarkerOptions mp = new MarkerOptions();
    mp.position(new LatLng(location.getLatitude(), location.getLongitude()));
    mp.title("my position");
    mp.icon(BitmapDescriptorFactory
            .defaultMarker(BitmapDescriptorFactory.HUE_ROSE));
    map.addMarker(mp);
    map.animateCamera(CameraUpdateFactory.newLatLngZoom(
            new LatLng(location.getLatitude(), location.getLongitude()), 16));
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}
}

【问题讨论】:

  • 我猜他们是怎么做到的。您创建一个由一个小三角形和一个圆圈组成的自定义标记。使用此自定义标记并在您四处走动或开车时更新您的当前位置。旋转标记以匹配您所面对的方向。这是marker documentation。我确实看到了旋转和自定义标记。寻找方向可能是你想弄清楚的诀窍。
  • 谢谢@so_jin_ee 我找到了解决方案。如果您不提供标记,它将回退到具有如上所示方向的蓝色标记

标签: android google-maps google-maps-api-3


【解决方案1】:

我认为您的 onMapReady 回调没有被触发。像这样使用getMapAsync 方法((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(this)。然后这应该调用googleMap.setMyLocationEnabled(true) 方法,您将能够看到您的方位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2010-12-28
    • 2018-05-25
    • 2015-05-29
    • 2014-10-08
    • 2014-05-17
    相关资源
    最近更新 更多