Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
gate1
2 / 2 / 0
Регистрация: 11.12.2011
Сообщений: 51
#1

Google map - Android

04.09.2013, 15:02. Просмотров 952. Ответов 6
Метки нет (Все метки)

Всем привет! Пишу плагин для юнити 3d для отображения карты google map.
Одна загвоздка есть, отображается только серая сетка http://gyazo.com/2fd1d8cb4ea68dcab1cf2803cafc5e7a
в консоле http://gyazo.com/5a4bc7f080293ffe0bd56166e0f499ee
знаю, что эта ошибка из-за apikey, но я вроде сгенерил дебажний ключ, засунул в xml. В гугл консоли активировал google api v2 android.
Если у кого-то будет желание помочь, можете глянуть проект https://www.dropbox.com/s/r50rcd31de...p-location.zip

Сама карта, при подключении к движку зумится, скролится нормально, только не отображается ) В jave пока не очень, думаю где-то в xml-ках что-то не так делаю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
04.09.2013, 21:05     Google map #2
Цитата Сообщение от gate1 Посмотреть сообщение
засунул в xml. В гугл консоли активировал google api v2 android.
Ключи для карт версии 1 прописываются в xml, а для google api v2 прописываются в манифесте
gate1
2 / 2 / 0
Регистрация: 11.12.2011
Сообщений: 51
04.09.2013, 22:31  [ТС]     Google map #3
пробовал по разному, ничего не выходит...
http://gyazo.com/61aef576844bfd2a5e3c323ec090321d
http://gyazo.com/5f9b9a38a5841309c5b59af090a0b62c
для мобильных платформ v2 последняя или используют версию 3? Если используют 3, то сколько еще будет поддерживаться вторая?
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
05.09.2013, 01:14     Google map #4
Цитата Сообщение от gate1 Посмотреть сообщение
для мобильных платформ v2 последняя
Для мобильных платформ есть версия 1 и 2.

Добавлено через 52 секунды
Покажите код активити с картой
gate1
2 / 2 / 0
Регистрация: 11.12.2011
Сообщений: 51
05.09.2013, 17:05  [ТС]     Google map #5
класс с активити картой
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.yvadim.GoogleMapPlugin;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.support.v4.app.FragmentActivity;
 
public class MainActivity extends Activity{
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}


манифест
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yvadim.GoogleMapPlugin"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
 
    <permission
          android:name="com.yvadim.GoogleMapPlugin.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
    <uses-permission android:name="com.yvadim.GoogleMapPlugin.permission.MAPS_RECEIVE"/>    
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>     
    <uses-permission android:name="com.yvadim.GoogleMapPlugin.permission.READ_GSERVICES"/> 
    <!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->       
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        
    <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" >
        
    <meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyAbST5W-qwvH2267KC9tY1rgD-clo90OM4"/>
        
        
        <activity
            android:name="com.yvadim.GoogleMapPlugin.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>
    </application>
 
</manifest>


activity_main.xml
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
 
<fragment
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          class="com.google.android.gms.maps.MapFragment" />
    
</RelativeLayout>


play service добавил в воркспейс
gyazo.com/4fd3a2f017c834026ef4509fb97969a3
линк тоже gyazo.com/1cfbbff2a1d70cab66406c6c5d6c77ba

сейчас такие ошибки вылазят
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
09-05 08:01:46.908: E/AndroidRuntime(4189): FATAL EXCEPTION: main
09-05 08:01:46.908: E/AndroidRuntime(4189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yvadim.GoogleMapPlugin/com.yvadim.GoogleMapPlugin.MainActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.os.Looper.loop(Looper.java:137)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.ActivityThread.main(ActivityThread.java:5103)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at java.lang.reflect.Method.invokeNative(Native Method)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at java.lang.reflect.Method.invoke(Method.java:525)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at dalvik.system.NativeStart.main(Native Method)
09-05 08:01:46.908: E/AndroidRuntime(4189): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Activity.setContentView(Activity.java:1895)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at com.yvadim.GoogleMapPlugin.MainActivity.onCreate(MainActivity.java:15)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Activity.performCreate(Activity.java:5133)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-05 08:01:46.908: E/AndroidRuntime(4189):     ... 11 more
09-05 08:01:46.908: E/AndroidRuntime(4189): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Fragment.instantiate(Fragment.java:592)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Fragment.instantiate(Fragment.java:560)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Activity.onCreateView(Activity.java:4738)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
09-05 08:01:46.908: E/AndroidRuntime(4189):     ... 21 more
09-05 08:01:46.908: E/AndroidRuntime(4189): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.maps.MapFragment" on path: DexPathList[[zip file "/data/app/com.yvadim.GoogleMapPlugin-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.yvadim.GoogleMapPlugin-1, /vendor/lib, /system/lib]]
09-05 08:01:46.908: E/AndroidRuntime(4189):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
09-05 08:01:46.908: E/AndroidRuntime(4189):     at android.app.Fragment.instantiate(Fragment.java:582)
09-05 08:01:46.908: E/AndroidRuntime(4189):     ... 24 more


Добавлено через 44 минуты
Так, пока этот вопрос решил, при импорте гугл плей сервис забыл чекбокс поставить copy to workspace






Добавлено через 1 час 17 минут
----------------------------------------------------------------------------
UPDATE
Подскажите пожалуйста, как добавить SupportMapFragment в программно созданный layout (мне нужно избавится от использования activity_main.xml http://gyazo.com/636bee434cd2b76a3606ace70cc5f21a)

что передать в setContentView
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.yvadim.GoogleMapPlugin;
 
import android.os.Bundle;
 
import android.app.Activity;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
 
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import com.unity3d.player.UnityPlayer;
 
    
public class MainActivity extends FragmentActivity{
    private GoogleMap mMap;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SetUpMap();
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    private void SetUpMap()
    {
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        //linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
        //linearLayout.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
        linearLayout.setGravity(Gravity.CENTER); 
       // linearLayout.addView(R.id.map);       
        //setContentView(R.layout.activity_main); 
        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.map);
        SupportMapFragment mapFragment = (SupportMapFragment)fragment;
        mMap = mapFragment.getMap();            
        
            setContentView();   ????
        
        
        
    }
 
}
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
05.09.2013, 21:09     Google map #6
Я вас просто отправлю вот сюда http://android-er.blogspot.com/2012/...ogle-maps.html , там всё пошагово написано
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 16:52     Google map
Еще ссылки по теме:

Android Google Map на устройстве
Android Не работают Google Map в стандартном приложении
Android Рисование маршрута на Google Map
Android Не отображается Google map
Android Почему Google map долго грузит детали карты в определенных координатах?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gate1
2 / 2 / 0
Регистрация: 11.12.2011
Сообщений: 51
06.09.2013, 16:52  [ТС]     Google map #7
Спасибо!

Добавлено через 19 часов 14 минут
Напишу как мап фрагмент в активити подключать динамически, мб кому понадобиться
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
         Log.d("MyMessages", "in ViewActivity.onCreate");        
         RelativeLayout mainLayout = new RelativeLayout(this);
         mainLayout.setId(123);
         setContentView(mainLayout);         
         Log.d("MyMessages", "ViewActivity Before newInstance");
         MapFragment frag = MapFragment.newInstance(); //This is where it used to crash with it's damn classnotfound exception
 
         Log.d("MyMessages", "in ViewActivity After newInstance");
        
         FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
         fragmentTransaction.add(mainLayout.getId(), frag);
         fragmentTransaction.commit();
    }
Yandex
Объявления
06.09.2013, 16:52     Google map
Ответ Создать тему
Опции темы

Текущее время: 14:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru