我正在尝试在谷歌地图中显示给定纬度和经度的位置。问题是它显示默认的一个位置,如果我明确导航到我的位置(对于给定的纬度和长度),那么我可以在其上看到标记和标题。
我期待它应该在第一次拍摄中显示给定lat和long的位置。 但默认情况下,它显示的是格陵兰附近的一些地方。
由于我不需要声誉,我无法在此处发布图片。
以下是我的代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
double latitude = getIntent().getDoubleExtra("lat", 0);
double longitude = getIntent().getDoubleExtra("lng", 0);
Log.d("Zumbare","lat value : "+latitude);
Log.d("Zumbare","lng value : "+longitude);
LatLng position = new LatLng(latitude, longitude);
MarkerOptions options = new MarkerOptions();
options.position(position);
options.title("Position");
options.snippet("Latitude:"+latitude+",Longitude:"+longitude);
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
GoogleMap googleMap = fm.getMap();
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.addMarker(options);
CameraUpdate updatePosition = CameraUpdateFactory.newLatLng(position);
CameraUpdate updateZoom = CameraUpdateFactory.zoomBy(5);
googleMap.moveCamera(updatePosition);
googleMap.animateCamera(updateZoom);
}
有人可以告诉我这里的问题。
编辑:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.google.android.gms:play-services:3.1.36'
}
日志:
04-18 12:52:13.535 2566-2581/com.app.maptest.gmap W/EGL_emulation﹕ eglSurfaceAttrib not implemented
04-18 12:52:13.536 2566-2581/com.app.maptest.gmap W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0x9fa6cc00, error=EGL_SUCCESS
04-18 12:52:17.527 2566-2566/com.app.maptest.gmap I/Google Maps Android API﹕ Google Play services package version: 7097470
04-18 12:52:17.556 2566-2566/com.app.maptest.gmap D/Zumbare﹕ lat value : 16.474311
04-18 12:52:17.556 2566-2566/com.app.maptest.gmap D/Zumbare﹕ lng value : 80.712814
04-18 12:52:17.963 2566-2581/com.app.maptest.gmap W/EGL_emulation﹕ eglSurfaceAttrib not implemented
04-18 12:52:17.963 2566-2581/com.app.maptest.gmap W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa58ff100, error=EGL_SUCCESS
04-18 12:52:21.485 2566-2697/com.app.maptest.gmap D/﹕ HostConnection::get() New Host Connection established 0xa0593ba0, tid 2697
04-18 12:52:21.516 2566-2566/com.app.maptest.gmap I/Choreographer﹕ Skipped 229 frames! The application may be doing too much work on its main thread.
04-18 12:52:24.522 2566-2578/com.app.maptest.gmap I/art﹕ Background sticky concurrent mark sweep GC freed 2035(112KB) AllocSpace objects, 4(258KB) LOS objects, 0% free, 24MB/24MB, paused 2.269ms total 420.232ms
04-18 12:52:24.666 2566-2578/com.app.maptest.gmap I/art﹕ Background partial concurrent mark sweep GC freed 823(72KB) AllocSpace objects, 6(5MB) LOS objects, 17% free, 18MB/22MB, paused 2.026ms total 139.787ms
EDIT2:
package com.app.maptest.gmap;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
double latitude = getIntent().getDoubleExtra("lat", 0);
double longitude = getIntent().getDoubleExtra("lng", 0);
Log.d("Zumbare","lat value : "+latitude);
Log.d("Zumbare","lng value : "+longitude);
LatLng position = new LatLng(16.474311,80.712814);
MarkerOptions options = new MarkerOptions();
options.position(position);
options.title("Position");
options.snippet("Latitude:"+latitude+",Longitude:"+longitude);
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
GoogleMap googleMap = fm.getMap();
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.addMarker(options);
CameraUpdate updatePosition = CameraUpdateFactory.newLatLng(position);
CameraUpdate updateZoom = CameraUpdateFactory.zoomBy(5);
googleMap.moveCamera(updatePosition);
googleMap.animateCamera(updateZoom);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:0)
我使用Google Maps API v2尝试了您的代码,并获得了与您相同的结果 请注意,从您的gradle文件中看起来您使用的是较旧的API,但您的日志文件表明您可能正在使用API v2。
我通过进行这些修改来修复它,试一试,看看它是否适合你:
mGoogleMap.addMarker(options);//keep this
//remove lines below:
//CameraUpdate updatePosition = CameraUpdateFactory.newLatLng(position);
//CameraUpdate updateZoom = CameraUpdateFactory.zoomBy(5);
//googleMap.moveCamera(updatePosition);
//googleMap.animateCamera(updateZoom);
//use this instead:
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(position).zoom(5).build();
googleMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));