0

place.getLatLng();メソッドを使用して、AndroidのPlacePickerを使用してFirebaseデータベースに場所の緯度と経度を保存しています。クリックして地図に位置を表示するLatLngを取得

place.getName();メソッドを使用してロケーション名も保存しました。

場所の名前はユーザーの投稿に表示されますが、緯度と経度は表示されません。私の意図は、ビュー所有者の場所の名前をクリックしたユーザーの場合、PlacePickerがその場所を地図に表示するアクティビティに移動することになります。ここ

は、私は、このような

postRef = FirebaseDatabase.getInstance().getReference().child("posts"); 
viewHolder.mPlaceName.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         postRef.child(post_key).addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           final String latLng = dataSnapshot.child("latLong").getValue().toString(); 
           Intent mapIntent = new Intent(MainActivity.this, MapActivity.class); 

           mapIntent.putExtra("LatLng",latLng); 
           startActivity(mapIntent); 

          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 

          } 
         }); 

        } 
       }); 

が、どのように私は自動的に緯度ことを使用しないように別のアクティビティに余分として保存緯度とロングを送信する方法を知っているfirebase JSON

{ 
    "dPicture" : "https://firebasestorage.googleapis.com/v0/b/myapp.appspot.com/o/Profile_images%2Fcropped175425077.jpg?alt=media&token=d40abdda-d4e7-450b-b215-a8bb0ee1ce4d", 
    "image" : "https://firebasestorage.googleapis.com/v0/b/myapp.appspot.com/o/Post_Images%2Fcropped945668710.jpg?alt=media&token=2db5ee7c-9c98-4512-98ea-7ec984e5306b", 
    "latLong" : "lat/lng: (-6.190593300000001,106.8061219)", 
    "summary" : "yo", 
    "place" : "the biggest mall in Asia", 
    "uid" : "bFVSFnu6uJcfOEmCGeYpmmRsjQA2", 
    "username" : "Rambo" 
} 

の例ですそしてLong値は自動的にPlacePickerにMapActivityのマップ内のその位置を表示させますか?

ありがとうございます!

+0

:だけでなく、この上で読むようにしてください

@Override public void onMapReady(GoogleMap map) { map.addMarker(new MarkerOptions() //get this LatLng values from the Intent .position(new LatLng(<yourLat>, <yourLng>)) .title("Hello world")); } 

:このコードを使用し、アプリでGoogleマップのセットアップを持っていると仮定すると、次の活動にそれらを表示するには

プロダクションアプリでは[Places APIのポリシー](https://developers.google.com/places/web-service/policies#pre-fetching_caching_or_storage_of_content)をよく読んでください。私が理解しているように、30日間以上データを保存することはできません。 –

答えて

1

まず、この

{ 
    "dPicture" : "https://firebasestorage.googleapis.com/v0/b/myapp.appspot.com/o/Profile_images%2Fcropped175425077.jpg?alt=media&token=d40abdda-d4e7-450b-b215-a8bb0ee1ce4d", 
    "image" : "https://firebasestorage.googleapis.com/v0/b/myapp.appspot.com/o/Post_Images%2Fcropped945668710.jpg?alt=media&token=2db5ee7c-9c98-4512-98ea-7ec984e5306b", 
    "lat": "-6.190593300000001", 
    "lng": "106.8061219", 
    "summary" : "yo", 
    "place" : "the biggest mall in Asia", 
    "uid" : "bFVSFnu6uJcfOEmCGeYpmmRsjQA2", 
    "username" : "Rambo" 
} 

のようなあなたのスキーマを変更する二つの別々の値として扱うか、あなたはそれらを1として扱われるようにしたい場合は、あなたがそれらを照会するには、この

{ 
    "dPicture" : "https://firebasestorage.googleapis.com/v0/b/myapp.appspot.com/o/Profile_images%2Fcropped175425077.jpg?alt=media&token=d40abdda-d4e7-450b-b215-a8bb0ee1ce4d", 
    "image" : "https://firebasestorage.googleapis.com/v0/b/myapp.appspot.com/o/Post_Images%2Fcropped945668710.jpg?alt=media&token=2db5ee7c-9c98-4512-98ea-7ec984e5306b", 
    "coords": { 
     "lat": "-6.190593300000001", 
     "lng": "106.8061219", 
    } 
    "summary" : "yo", 
    "place" : "the biggest mall in Asia", 
    "uid" : "bFVSFnu6uJcfOEmCGeYpmmRsjQA2", 
    "username" : "Rambo" 
} 

ようにそれを得ることができます

:スキーマの最初のバージョンについて

スキーマの第二版について

postRef = FirebaseDatabase.getInstance().getReference().child("posts"); viewHolder.mPlaceName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { postRef.child(post_key).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { final String lat = dataSnapshot.child("lat").getValue().toString(); final String lng = dataSnapshot.child("lng").getValue().toString(); Intent mapIntent = new Intent(MainActivity.this, MapActivity.class); mapIntent.putExtra("lat",lat); mapIntent.putExtra("lng",lng); startActivity(mapIntent); } @Override public void onCancelled(DatabaseError databaseError) { } }); } }); 

postRef = FirebaseDatabase.getInstance().getReference().child("posts"); 
viewHolder.mPlaceName.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     postRef.child(post_key).addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       final String lat = dataSnapshot.child("coords").child("lat").getValue().toString(); 
       final String lng = dataSnapshot.child("coords").child("lng").getValue().toString(); 
       Intent mapIntent = new Intent(MainActivity.this, MapActivity.class); 
       mapIntent.putExtra("lat",lat); 
       mapIntent.putExtra("lng",lng); 
       startActivity(mapIntent); 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

    } 
}); 

あなたはあなたのために働くだろうか実装できますが、私は、組織の好みのための第二1を示唆しています。このコードを使用する前にhttps://developers.google.com/maps/documentation/android-api/marker

+0

こんにちはKurt ...答えをありがとうが、これは、次の活動に情報を取得することです...私の質問は、その場所で地図上のドロップピンを表示するためにその情報を使用する方法についてでした。しかし、1つの大きな勧告のためにupvote!緯度と経度のエントリをどのように分けるのですか? 'getLatLng();'メソッド – Jagmaster

+0

私は質問を誤解しています。ごめんなさい。 –

+0

これらを設定するには、getLatLng()。latitudeとgetLatLng()。longitudeを使用できます。詳細はこちらをご覧ください:https://developers.google.com/android/reference/com/google/android/gms/maps/model/LatLng –

関連する問題