2016-08-21 8 views
0

私は検索の場所の機能と地図の種類の変更機能の仕事を私のアンドロイドのGoogleマップのAPIのアプリケーションで作ろうとしていますが、私は検索やマップに関連するボタンをタップするアプリケーションの実行の停止を変更します。 ボタンと関数のレイアウトはうまく実装されていますが、どこにエラーがあるのか​​わかりません。誰もが、これらの2つの機能を正しく動作させるために欠けているものを知っていますか?検索の場所とマップの種類の機能が動作していません

Manifest file: 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.dborahramos.myapplication"> 

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <meta-data 
      android:name="com.google.android.geo.API_KEY" 
      android:value="AIzaSyBVCTEWR6ifov2W_9itWuUfBvptd8MoA7U" /> 

     <activity 
      android:name=".MapsActivity" 
      android:label="@string/title_activity_maps"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Here is activity maps: 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <EditText 
       android:layout_width="130dp" 
       android:layout_height="wrap_content" 
       android:id="@+id/TFaddress" /> 
      <Button 
       style="?android:attr/buttonStyleSmall" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Search" 
       android:id="@+id/Bsearch" 
       android:layout_gravity="right" 
       android:onClick="onSearch" /> 
      <Button 
       style="?android:attr/buttonStyleSmall" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Map Type" 
       android:id="@+id/Btype" 
       android:layout_gravity="right" 
       android:nestedScrollingEnabled="false" 
       android:onClick="changeType" /> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" android:layout_width="320dp" 
       android:layout_height="450dp" android:id="@+id/map" tools:context=".MapsActivity" 
       android:name="com.google.android.gms.maps.SupportMapFragment" /> 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 
       <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="^" 
        android:id="@+id/Bzoomin" 
        android:onClick="onZoom" /> 

       <Button 
        style="?android:attr/buttonStyleSmall" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="v" 
        android:id="@+id/Bzoomout" 
        android:layout_gravity="center_vertical" 
        android:onClick="onZoom" /> 

      </LinearLayout> 
     </LinearLayout> 
    </LinearLayout> 

And here are search location and map type functions on maps activity.java. 

    public void onSearch(View view) 
     { 
      EditText location_tf = (EditText)findViewById(R.id.TFaddress); 
      String location = location_tf.getText().toString(); 
      List<Address> addressList = null; 
      if(location != null || !location.equals("")) 
      { 
       Geocoder geocoder = new Geocoder(this); 
       try { 
        addressList = geocoder.getFromLocationName(location , 1); 


       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       Address address = addressList.get(0); 
       LatLng latLng = new LatLng(address.getLatitude() , address.getLongitude()); 
       mMap.addMarker(new MarkerOptions().position(latLng).title("Marker")); 
       mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 

      } 
     } 

    public void changeType(View view) 
    { 
     if(mMap.getMapType() == GoogleMap.MAP_TYPE_NORMAL) 
     { 
      mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 
     } 
     else 
      mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
    } 

答えて

0

あなたの意図を確認してください。 documentationで述べたように

あなたが最初にその作用、URIとパッケージを指定して、インテントオブジェクトを作成する必要があります意図でGoogleマップを起動するために。

  • アクション:すべてのGoogle Mapsの意図は、Viewアクションと呼ばれている - ACTION_VIEW
  • URI:Googleマップのインテントは、アクションを実行するためのデータとともに、目的のアクションを指定するURIエンコードされた文字列を使用します。
  • パッケージsetPackage("com.google.android.apps.maps")を呼び出すと、Android用Googleマップアプリがインテントを確実に処理するようになります。

さらに、

アプリはIntentオブジェクトにresolveActivity()を呼び出して、意図を受信する利用可能であることを確認するには。結果がnullでない場合は、インテントを処理できるアプリが少なくとも1つあります。startActivity()を呼び出しても安全です。結果がnullの場合は、インテントを使用しないでください。可能であればインテントを呼び出す機能を無効にする必要があります。

詳細情報と例は、Google Maps Intentsにあります。

関連する問題