2016-07-16 79 views
0

我需要Google Map上的搜索工具栏。Android - MapActivity中的搜索工具栏

我使用MapActivity显示地图。
我做的方式是通过创建项目向导,当您创建一个新项目时,您可以从基本活动,空活动,地图活动中进行选择。
我选择了MapActivity。 在XML文件中我只有这个:

<resources> 
    <string name="google_maps_key" templateMergeStrategy="preserve" 
     translatable="false">AIzaSyCx3iR5fkeWr2LUf6JBHwGLEEkeghL3snk 
    </string> 
</resources> 

那么什么是插在地图上搜索工具栏的方法是什么?

然后如何添加那个搜索工具栏。如果我添加一个布局,那么会显示一个错误。

+2

请更明确地说明你想要达到的目标以及你尝试的方式,因为我不知道什么是“这里”以及你使用的是什么“字段”。 –

+0

我需要谷歌地图上的搜索工具栏。我使用MapActivity显示地图(当您创建一个新项目时,它会询问基本活动,空活动,地图活动,我选择了MapActivity,在xml文件中只有这个: AIzaSyCx3iR5fkeWr2LUf6JBHwGLEEkeghL3snk 那么如何添加搜索工具栏。如果我添加布局它显示错误 –

+0

添加到您的问题,请。 –

回答

0

我会这样做的方式如下:
我会有一个活动,其中有一个片段,其中包含地图里面。
里面的活动我会与地图显示的片段的方法:

public void showMap() { 

    MapLocationFragment locationFragment = MapLocationFragment.newInstance(); 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.fragment_container, locationFragment) 
      .addToBackStack(null) 
      .commit(); 
} 

activity xml: 
<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <include 
     android:id="@+id/app_bar_include" 
     layout="@layout/app_bar_layout_device" /> 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="?attr/actionBarSize" /> 
    </RelativeLayout> 

现在,MapLocationFragment里面,你需要有类似的东西:

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.maps_layout, container, false); 
    return view; 
} 


@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    initializeMapIfNeeded(); 
} 

private void initializeMapIfNeeded() { 
    if (googleMap == null) { 
     loadMapAsync(); 
    } 
} 

private void loadMapAsync() { 
    ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.location_map)).getMapAsync(getOnMapReadyCallback()); 
} 

public OnMapReadyCallback getOnMapReadyCallback() { 
    return new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap map) { 
      googleMap = map; 
      if (googleMap == null) { 
       return; 
      } 

      googleMap.setIndoorEnabled(true); 
      googleMap.getUiSettings().setMyLocationButtonEnabled(true); 
      googleMap.setOnMyLocationButtonClickListener(getMapMpOnMyLocationClickListener()); 
      googleMap.setLocationSource(getNewLocationSource()); 
      googleMap.setOnCameraChangeListener(getCameraChangeListener()); 
      //do other stuff too 
     } 
    }; 
} 

xml: 

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

<fragment 
     android:id="@+id/location_map" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="16dp" 
     android:clickable="true" 
     android:src="@android:drawable/ic_menu_set_as" 
     app:layout_anchorGravity="bottom|right|end" 
     android:layout_gravity="bottom|end"/> 

</android.support.design.widget.CoordinatorLayout> 

对于更多细节请看这个项目:
Sunshine app