Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在谷歌地图中显示当前用户位置附近的餐馆。当用户打开地图活动时_Android_Google Maps - Fatal编程技术网

Android 如何在谷歌地图中显示当前用户位置附近的餐馆。当用户打开地图活动时

Android 如何在谷歌地图中显示当前用户位置附近的餐馆。当用户打开地图活动时,android,google-maps,Android,Google Maps,如何显示用户附近的所有餐厅(突出显示)或任何其他公共场所,以及如何在列表视图中显示所有附近的餐厅或公共场所。用户可以使用功能定义范围,即显示该城市100米、500米范围内的餐厅等 我使用此代码了解用户在地图中的当前位置:--> package com.example.locationandmapdemo; 导入androidx.annotation.NonNull; 导入androidx.core.app.ActivityCompat; 导入androidx.core.content.Conte

如何显示用户附近的所有餐厅(突出显示)或任何其他公共场所,以及如何在列表视图中显示所有附近的餐厅或公共场所。用户可以使用功能定义范围,即显示该城市100米、500米范围内的餐厅等

我使用此代码了解用户在地图中的当前位置:-->

package com.example.locationandmapdemo;
导入androidx.annotation.NonNull;
导入androidx.core.app.ActivityCompat;
导入androidx.core.content.ContextCompat;
导入androidx.fragment.app.FragmentActivity;
导入android.Manifest;
导入android.content.Context;
导入android.content.pm.PackageManager;
导入android.location.Address;
导入android.location.Geocoder;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.nfc.Tag;
导入android.os.Build;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.KeyEvent;
导入android.view.inputmethod.EditorInfo;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.gms.maps.CameraUpdateFactory;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.OnMapReadyCallback;
导入com.google.android.gms.maps.SupportMapFragment;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.MarkerOptions;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Locale;
公共类MapsActivity扩展了FragmentActivity在MapReadyCallback上的实现{
私有谷歌地图;
地点经理地点经理;
LocationListener LocationListener;
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]权限,@NonNull-int[]
格兰特结果){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
if(requestCode==1){
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION\u已授予){
if(ContextCompat.checkSelfPermission(这个,Manifest.permission.ACCESS\u FINE\u LOCATION)=
PackageManager.权限(已授予){
locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,0,0,
位置(监听器);
mMap.setMyLocationEnabled(真);
}
}
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_映射);
msearchtext=(EditText)findViewById(R.id.input\u serach);
SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map);
getMapAsync(这个);
}
@凌驾
4月1日公开作废(谷歌地图谷歌地图){
locationManager=(locationManager)this.getSystemService(Context.LOCATION\u服务);
locationListener=新locationListener(){
@凌驾
已更改位置上的公共无效(位置){
mMap.clear();//这将在添加内容之前清除映射。
LatLng userLocation=新LatLng(location.getLatitude(),location.getLongitude());
mMap.addMarker(新的MarkerOptions().position(userLocation.title)(“您的位置”);
mMap.moveCamera(CameraUpdateFactory.newLatLng(userLocation));
Geocoder Geocoder=新的Geocoder(getApplicationContext(),Locale.getDefault());
试一试{
列表地址=
geocoder.getFromLocation(location.getLatitude(),location.getLatitude(),1);
匹配原始地址,显然是地址本身
if(listaddresses!=null&&listaddresses.size()>0){
Log.i(“placeInfo”,listaddresses.get(0.toString());//get(0)表示获取项目
从索引0处的ArrayList。
字符串地址=”;
if(listaddresses.get(0.getAdminArea()!=null){
address+=listaddresses.get(0).getAdminArea()+“”;
}
if(listaddresses.get(0.GetLocation()!=null){
address+=listaddresses.get(0).GetLocation()+“”;
}
if(listaddresses.get(0.GetThroughure()!=null){
address+=listaddresses.get(0.GetThroughure()+“”;
}
Toast.makeText(MapsActivity.this,address,Toast.LENGTH_SHORT.show();
Log.i(“地点”,地址);
}
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
状态已更改的公共void(字符串s、int i、Bundle){
}
@凌驾
已提供已启用的公共void(字符串s){
}
@凌驾
公共无效onProviderDisabled(字符串s){
}
};
如果(Build.VERSION.SDK_INT<23){
locationManager.RequestLocationUpdate(locationManager.GPS\提供程序,0,0,locationListener);
}否则{
if(ContextCompat.checkSelfPermission(这个,Manifest.permission.ACCESS\u FINE\u位置)!=
PackageManager.权限(已授予){
ActivityCompat.requestPermissions(此,新字符串[])
{Manifest.permission.ACCESS_FINE_LOCATION},1);
}否则{
locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,0,0,
位置(监听器);
位置LastKnown位置=
locationManager.getLastKnownLocation(locationManager.GPS\U提供程序);
init();
mMap.clear();
LatLng userLocation=新LatLng(lastKnownLocation.getLatitude(),
lastnownlocation.getLongitude());
mMap.addMarker(新的MarkerOptions().position(userLocation.title)(“您的位置”);
mMap.moveCamera(CameraUpdateFactory.newLatLng(userLocation));
}
package com.example.locationandmapdemo;

import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.nfc.Tag;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;

LocationManager locationManager;
LocationListener locationListener;

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] 
grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == 1) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == 
PackageManager.PERMISSION_GRANTED) {
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
locationListener);
                mMap.setMyLocationEnabled(true);
                
            }
        }
    }
}






@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    msearchtext=(EditText)findViewById(R.id.input_serach);



    
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
 }



 


 @Override
 public void onMapReady(GoogleMap googleMap) {
    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            mMap.clear();//this will clear the map before we add something.
            LatLng userLocation = new LatLng(location.getLatitude(), location.getLongitude());
            mMap.addMarker(new MarkerOptions().position(userLocation).title("Your Location"));
            mMap.moveCamera(CameraUpdateFactory.newLatLng(userLocation));

            
            Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
            try{
                List<Address> listaddresses = 
geocoder.getFromLocation(location.getLatitude(),location.getLongitude(),1);
  match for original address, obiusly that is address itself

                if(listaddresses !=null && listaddresses.size() >0){
                    Log.i("placeInfo",listaddresses.get(0).toString());//get(0) means to get the item 
from ArrayList at index 0.
               String address ="";
                    if(listaddresses.get(0).getAdminArea() != null){
                     address +=listaddresses.get(0).getAdminArea() + " ";

                    }
                    if(listaddresses.get(0).getLocality() != null){
                        address +=listaddresses.get(0).getLocality() + " ";
                    }

                    if(listaddresses.get(0).getThoroughfare() != null){
                        address +=listaddresses.get(0).getThoroughfare() + " ";
                    }
                    Toast.makeText(MapsActivity.this,address,Toast.LENGTH_SHORT).show();
                    Log.i("Place Location",address);


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


        @Override
        public void onStatusChanged(String s, int i, Bundle bundle) {

        }

        @Override
        public void onProviderEnabled(String s) {

        }

        @Override
        public void onProviderDisabled(String s) {

        }
    };

    if (Build.VERSION.SDK_INT < 23) {

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
    } else {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != 
PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[] 
{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
        } else {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
locationListener);
            Location lastKnownLocation = 
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            init();

            mMap.clear();
            LatLng userLocation = new LatLng(lastKnownLocation.getLatitude(), 
lastKnownLocation.getLongitude());
            mMap.addMarker(new MarkerOptions().position(userLocation).title("Your Location"));
            mMap.moveCamera(CameraUpdateFactory.newLatLng(userLocation));
    }
        
    }
}



}