Google地图只显示一个标记Android

时间:2014-05-29 09:24:27

标签: android google-maps

我是下一个问题,我试图在Google地图中显示一些标记,但只显示第一个标记,而不显示其他标记。它不会抛出任何异常,但只显示第一个标记(电话位置)。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    context = getActivity().getApplicationContext();
    v = inflater.inflate(R.layout.fragment_map, container, false);
    Bundle b = getArguments();
    receiveExtraData(b);
    MapsInitializer.initialize(getActivity());
    mMapView = (MapView) v.findViewById(R.id.map);
    mMapView.onCreate(mBundle);
    setUpMapIfNeeded(v);
    return v;
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        listener = (FragmentsListener) activity;
    } catch (ClassCastException e) {}
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBundle = savedInstanceState;
}

private void setUpMapIfNeeded(View inflatedView) {
    if (mMap == null) {
        mMap = ((MapView) inflatedView.findViewById(R.id.map)).getMap();
        if (mMap != null) {
            setUpMap();
        }
    }
}

private void setUpMap() {
    GPSPoint point = new GPSPoint(context);
    LatLng latLng = point.getCurrentPositionLatLng();
    MarkerOptions phoneMarker = new MarkerOptions().position(latLng).title("Marker");
    mMap.addMarker(phoneMarker);
    phoneMarker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
    CameraPosition cameraPosition = new CameraPosition.Builder().target(latLng).zoom(20).build();
    mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    addDevicesMarkers(connectedDevices);
}

@Override
public void onResume() {
    super.onResume();
    mMapView.onResume();
}

@Override
public void onPause() {
    super.onPause();
    mMapView.onPause();
}

@Override
public void onDestroy() {
    mMapView.onDestroy();
    super.onDestroy();
}

private void receiveExtraData(Bundle b){
    connectedDevices = b.getParcelableArrayList(BundlesKeys.BLUETOOTH_DEVICES_ARRAY);
}

private void getDevicePosition(BluetoothDevice bDevice){
    listener.getDeviceLocation(bDevice);
}

private void addDevicesMarkers(ArrayList<BluetoothDevice> list){
    if (!list.isEmpty()){
        BluetoothDevice device = list.get(0);
        getDevicePosition(device);
    }
}

public void addMarker(LatLng pos){
    MarkerOptions deviceMarker = new MarkerOptions().position(pos).title("Device");
    mMap.addMarker(deviceMarker);
}

有人知道修复?有人知道如何为设备位置事件编写监听器吗?

1 个答案:

答案 0 :(得分:1)

您必须使用mMap.addMarker()与要显示的标记数一样多的次数。如果您只使用一次,就像在setUpMap()内进行一样,您只能看到一个标记。 不要忘记更改每个标记的MarkerOptions属性。