2014-04-05 4 views
1

Google지도 API를 배우려고합니다. 지도가 표시되지만 올바른 위치에서 마커를 얻을 수 없습니다. 나는 그것을 중국 어딘가의 어딘가에서 본다. 더욱이지도는 (0,0)에 중심을두고 (lat, long) 제공하지 않습니다. 여기Google지도 표시가 표시되지 않음

활동

public class HomeActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_page); 
     GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     map.addMarker(new MarkerOptions() 
       .position(new LatLng(37.7750, 122.4183)) 
       .title("San Francisco")); 
    } 

} 

home_page.xml 내 코드입니다

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

의 AndroidManifest.xml

<uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="16" /> 

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-feature 
      android:glEsVersion="0x00020000" 
      android:required="true"/> 
    <uses-feature android:name="android.hardware.camera" 
        android:required="true" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 


    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <meta-data 
       android:name="com.google.android.gms.version" 
       android:value="@integer/google_play_services_version" /> 
     <activity android:name=".HomeActivity" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <meta-data 
       android:name="com.google.android.maps.v2.API_KEY" 
       android:value="My SHA1 key"/> 
    </application> 

나는 무엇을 놓치고 있습니까?

+0

Activity 대신 FragmentActivity를 확장 해 보았습니까? – JRowan

+0

우리에게 매니페스트 파일을 보여줍니다. –

+0

나는 중국 근처의 바다 어딘가에 마커를 본다. 또한 맵은 샌프란시스코가되어야 할 (lat, long)이 아닌 (0,0)에 집중되어 있습니다. – Prasanna

답변

2

샌프란시스코의 위도와 경도는 Google에 따라 37.7833° N, 122.4167° W입니다. 서쪽 경도는 음수 부호로 표시해야합니다. 당신이 당신의 위치에 중심을 설정합니다 zoomToSpan

을 사용할 수 있습니다 37.7750, -122.4183

1

마커를 표시하려면 아이콘을 설정해야한다고 생각합니다. 따라서 .icon을 추가하고 나만의 아이콘 아이콘을 설정하거나 기본 아이콘을 사용하십시오.

map.addMarker(new MarkerOptions() 
       .position(new LatLng(37.7750, 122.4183)) 
       .title("San Francisco").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 
+0

조금 더 많은 정보를 추가했습니다. 지도는 0,0을 중심으로하며 위도에서는 제공하지 않습니다. – Prasanna

+0

지도의 중심은 0,0입니다. 무엇을 의미합니까?, 더 설명하십시오. –

+0

활동이로드되면지도가 표시됩니다. 그러나 대서양은 0,0을 기본값 (위도, 경도)으로 표시합니다. 내가 준 좌표는 나타나지 않습니다. 따라서 문제는 마커 아이콘뿐 아니라 전체 마커 객체 자체에서도 발생합니다. – Prasanna

0

처음에는 GoogleMap을로드하는 데 시간이 걸릴 수 있습니다. 그냥 이것으로 확인하십시오.

if(map!=null) { 

    map.addMarker(new MarkerOptions() 
      .position(new LatLng(37.7750, 122.4183)) 
      .title("San Francisco")); 

} 
+0

하지만 같은 스레드에. 내지도 개체가 null이면 map.addMarker를 말할 때 NullPointerException이 발생했을 것입니다. – Prasanna

0

같은 좌표가 있었어야 뭔가. 나는 이것이 당신이 필요로하는 것이라고 생각합니다.

관련 문제