我尝试使用google地点api搜索谷歌地图api组合中的位置,我只看到地方制作者,但我不打印我的地理定位。
(对不起,但我的英文..我希望能理解我......)
我的代码在一个片段中:
public class MapFragmentActivity extends Fragment implements LocationListener {
private static View gv;
GoogleMap googleMap;
List<Place> findPlaces;
GPSLocation gps;
Handler mHandler = new Handler();
private ActionBar actionBar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (gv != null) {
ViewGroup parent = (ViewGroup) gv.getParent();
if (parent != null){
parent.removeView(gv);
}
}
try {
gv = inflater.inflate(R.layout.principalayoutmap,container, false);
} catch (InflateException e) {
/* map is already there, just return view as it is */
}
gv.setBackgroundResource(android.R.color.black);
googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.getUiSettings().setZoomGesturesEnabled(true);
gps = new GPSLocation(gv.getContext());
if(gps.canGetLocation()){
new GetPlaces().execute();
googleMap.setMyLocationEnabled(true);
}
else{
gps.showSettingsAlert();
}
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(new LatLng(gps.getLatitude(), gps.getLongitude()),100);
googleMap.moveCamera(update);
return gv;
}
public void onDestroyView() {
super.onDestroyView();
//Log.d(TAG, "onDestroyView");
googleMap.clear();
Fragment f = getActivity()
.getSupportFragmentManager().findFragmentById(R.id.map);
if (f != null) {
getActivity().getSupportFragmentManager()
.beginTransaction().remove(f).commit();
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
class GetPlaces extends AsyncTask<Void, Void, Void>{
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
//this.listView.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, placeName));
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
mHandler.post(new Runnable() {
@Override
public void run() {
findNearLocation();
}
});
return null;
}
}
public void findNearLocation() {
//googleMap.setMyLocationEnabled(true);
PlacesService service = new PlacesService("****xvRF1RH4tMq1************");
double lat = gps.getLatitude();
double lon = gps.getLongitude();
findPlaces = service.findPlaces(lat,lon,"food");
for(int i=0;i<findPlaces.size();i++){
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(findPlaces.get(i).getLatitude(), findPlaces.get(i).getLongitude()))
.title(findPlaces.get(i).getName())
.snippet(findPlaces.get(i).getVicinity())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
}
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
GPSLocation.class是一个用于搜索我的位置的类,并帮助打印附近的地方
Manifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zape.zapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<!-- Google Maps related permissions -->
<permission
android:name="com.ecs.google.maps.v2.actionbarsherlock.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
<!-- Network connectivity permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Access Google based webservices -->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- External storage for caching. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- My Location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name="com.loggin.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.loggin.Registrar"></activity>
<activity android:name="com.principal.PrincipalMainMap"></activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AI***GwDUTs6hb6VE8eoG****"/>
<activity android:name="com.principal.MainFragment"></activity>
</application>
</manifest>
我的principalMapLayout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
</FrameLayout>
</LinearLayout>
为了安全起见,我删除了我的API KEYS,这不是问题。
最后,我在我的deivce(NEXUS 4)中展示了这一点:
可以看到只打印地点标记,但我不打印我的地理位置
答案 0 :(得分:0)
我认为问题发生是因为当我运行没有GPS的应用程序时,我检查此选项并执行激活GPS的意图,当我激活gps时,我按下后退按钮并且我的应用程序中没有返回意图。 .. 在我再次尝试打开我的应用程序和应用程序位置后,但不打印我的位置,但将标记位置设置为是...
为例: 我第一次打开应用程序,应用运行良好:
现在,打开没有GPS的应用程序并显示此警报:
我打开这个意图并激活GPS,在我尝试返回应用程序但我没有第一时间返回,但是在我打开应用程序后但我不打印我的位置: (1.我的问题是我没有从GPS设置回来) (2.当我现在打开我的应用程序时...我找不到我的位置)
任何人都知道为什么会这样? 我使用的是Nexus 4(android 4.4 rooted,stock fw).. 这个问题也在其他设备中......我可以尝试其他deviche(Galaxy s3)并且我有相同的结果