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

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

Войти
Регистрация
Восстановить пароль
 
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
#1

Не отображает карту - Программирование Android

28.09.2014, 06:59. Просмотров 570. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Нашел интересный пример по Google Placeshttp://www.androidhive.info/2012/08/...maps-tutorial/. Все бы ничего, но карта в фоне не грузится.. Подозреваю, что это из-за apiKey. Уже целую кучу мануалов переискал, ничего не помогает. Может кто подскажет? как правильно запустить данный пример, чтобы карта работала?
map_places.xml
Java
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="AIzaSyACjMrCMRSpwcZVst1i_NYj1iP1peFPFco"
/>
PlacesMapActivity.java
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.androidhive.googleplacesandmaps;
 
import java.util.List;
 
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
 
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
 
public class PlacesMapActivity extends MapActivity {
    // Nearest places
    PlacesList nearPlaces;
 
    // Map view
    MapView mapView;
 
    // Map overlay items
    List<Overlay> mapOverlays;
 
    AddItemizedOverlay itemizedOverlay;
 
    GeoPoint geoPoint;
    // Map controllers
    MapController mc;
    
    double latitude;
    double longitude;
    OverlayItem overlayitem;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_places);
 
        // Getting intent data
        Intent i = getIntent();
        
        // Users current geo location
        String user_latitude = i.getStringExtra("user_latitude");
        String user_longitude = i.getStringExtra("user_longitude");
        
        // Nearplaces list
        nearPlaces = (PlacesList) i.getSerializableExtra("near_places");
 
        mapView = (MapView) findViewById(R.id.mapView);
        mapView.setBuiltInZoomControls(true);
 
        mapOverlays = mapView.getOverlays();
        
        // Geopoint to place on map
        geoPoint = new GeoPoint((int) (Double.parseDouble(user_latitude) * 1E6),
                (int) (Double.parseDouble(user_longitude) * 1E6));
        
        // Drawable marker icon
        Drawable drawable_user = this.getResources()
                .getDrawable(R.drawable.mark_red);
        
        itemizedOverlay = new AddItemizedOverlay(drawable_user, this);
        
        // Map overlay item
        overlayitem = new OverlayItem(geoPoint, "Your Location",
                "That is you!");
 
        itemizedOverlay.addOverlay(overlayitem);
        
        mapOverlays.add(itemizedOverlay);
        itemizedOverlay.populateNow();
        
        // Drawable marker icon
        Drawable drawable = this.getResources()
                .getDrawable(R.drawable.mark_blue);
        
        itemizedOverlay = new AddItemizedOverlay(drawable, this);
 
        mc = mapView.getController();
 
        // These values are used to get map boundary area
        // The area where you can see all the markers on screen
        int minLat = Integer.MAX_VALUE;
        int minLong = Integer.MAX_VALUE;
        int maxLat = Integer.MIN_VALUE;
        int maxLong = Integer.MIN_VALUE;
 
        // check for null in case it is null
        if (nearPlaces.results != null) {
            // loop through all the places
            for (Place place : nearPlaces.results) {
                latitude = place.geometry.location.lat; // latitude
                longitude = place.geometry.location.lng; // longitude
                
                // Geopoint to place on map
                geoPoint = new GeoPoint((int) (latitude * 1E6),
                        (int) (longitude * 1E6));
                
                // Map overlay item
                overlayitem = new OverlayItem(geoPoint, place.name,
                        place.vicinity);
 
                itemizedOverlay.addOverlay(overlayitem);
                
                
                // calculating map boundary area
                minLat  = (int) Math.min( geoPoint.getLatitudeE6(), minLat );
                minLong = (int) Math.min( geoPoint.getLongitudeE6(), minLong);
                maxLat  = (int) Math.max( geoPoint.getLatitudeE6(), maxLat );
                maxLong = (int) Math.max( geoPoint.getLongitudeE6(), maxLong );
            }
            mapOverlays.add(itemizedOverlay);
            
            // showing all overlay items
            itemizedOverlay.populateNow();
        }
        
        // Adjusting the zoom level so that you can see all the markers on map
        mapView.getController().zoomToSpan(Math.abs( minLat - maxLat ), Math.abs( minLong - maxLong ));
        
        // Showing the center of the map
        mc.animateTo(new GeoPoint((maxLat + minLat)/2, (maxLong + minLong)/2 ));
        mapView.postInvalidate();
 
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
 
}
AndroidManifect
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
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidhive.googleplacesandmaps"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
 
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <!--  Add Google Map Library -->
        <uses-library android:name="com.google.android.maps" />
        
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <!-- SinglePlaceActivity -->
        <activity android:name=".SinglePlaceActivity" android:label="Place Details">
        </activity>
        
        <!-- PlacesMapActivity -->
        <activity android:name=".PlacesMapActivity" android:label="Near Places Map View">
        </activity>
    </application>
    
    <!-- Internet Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
 
    <!-- Network State Permissions -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <!-- Access Location -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
</manifest>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2014, 06:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не отображает карту (Программирование Android):

Не отображает картинку - Программирование Android
Подскажите, в чём ошибка в приведённом коде. Пытаюсь вывести на экран простой png, но почему-то не получается. Я только начинаю изучать...

GridView не отображает элементы - Программирование Android
Вопрос такой. Имеется GridView. Помещен на R.layout.main, String data2k = {&quot;1961&quot;, &quot;1962&quot;,..}; ArrayAdapter&lt;String&gt; adapter2;...

Почему Handler не отображает сообщение на экране - Программирование Android
Есть Handler, который выполняет Runnable, во входящий поток отправляется сообщение, по сути он должен отобразить его на экране, но нет,...

Android Studio не правильно отображает визуально - Программирование Android
Начал учить Androd, создал первый проект на Android Studio и возникла такая проблема, в визуальном преставление я перенес кнопку и...

WebView не отображает локальную html страницу - Программирование Android
В общем пытался я отобразить в webview локальную html страницу. Но не тут то было. Он не захотел ее загружать. Пишет(на картинке)... ...

Webview Веб браузер отображает некорректно страницы - Программирование Android
Прощу прощение если тема не в теме и такое уже== правда искал не нашел Сразу хочу оговориться я не профессиональный программист под...

5
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.09.2014, 17:04 #2
Strelok45, здравствуй!
Спасибо за ссылку. Недавно мы решили отказаться от Яндекс-карт (ввиду их нативного устаревшего кода, который начал подглючивать на новых смартфонах). Процесс перехода на Google Maps у нас как раз идёт. Если я ничего не путаю, тьюториал, изложенный выше, создан для Google Maps v1.0, к которым невозможно получить API_KEY. С конца 2012 года вышла версия v2.0, на которую вам и надо ориентироваться. Однако мне пока что не удалось сделать и версию под неё (по многочисленным тьюториалам). К тому же, Google Maps обладают таким досадным недостатком, что требуют для своей работы Google Play Services, которые на некоторых устройствах установить невозможно. Видимо, придётся начинать использовать эмулятор для тестирования.

Добавлено через 11 минут
Вот более свежая статья от этого замечательного сайта:
http://www.androidhive.info/2013/08/...oogle-maps-v2/
Отличие, например, в форме отображения карт. Сейчас используются фрагменты:
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 
    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
 
</RelativeLayout>
Но и тут не всё гладко. У меня возникают разные баги, и часто на stackoverflow.com используют не MapFragment, а SupportMapFragment (в XML и Java). В общем, необъятное поле для деятельности. Использованный тьюториал, тем не менее, не помог мне сделать карты даже в новых проектах. Кстати, забавно, там на некоторых снимках экрана ключи заретушированы, но слабо, а в других местах показаны открыто.
1
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
28.09.2014, 17:09  [ТС] #3
Цитата Сообщение от CoolMind Посмотреть сообщение
Если я ничего не путаю, тьюториал, изложенный выше, создан для Google Maps v1.0, к которому невозможно получить API_KEY.
хм, я просто уже все коды перебрал эти не пашет. Скорей всего да, v1. Может ее тогда под map fragment переписать..
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.09.2014, 17:18 #4
Strelok45, вроде, у вас же были темы с Google Maps раньше? Тоже не заработало?
Да, с API_KEY там целая история. У "Яндекса" намного проще. А тут приходится добавлять новый проект на сайте, генерировать ключ, при этом всё правильно прописать при генерации. Затем, возможно, какие-то подписи ещё надо сделать для приложения (о чём не написано в тьюториалах).
0
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
28.09.2014, 17:24  [ТС] #5
Цитата Сообщение от CoolMind Посмотреть сообщение
у вас же были темы с Google Maps раньше? Тоже не заработало?
да я там находил код, но он был написан похоже по этому мануалу. Долго его мучал пока этот мануал не нашел, собрал все работает, только вот карта в фоне не отображается=( Там с библиотеками долго разбирался еще. Немного переписать пришлось и код, в примере этом некоторые куски кода уже неактуальны. В GooglePlaces и AlertDialogManager.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.09.2014, 22:22 #6
Strelok45, заглянул снова сюда: http://code.tutsplus.com/tutorials/a...--mobile-15771
Народ тоже мучается от того, что карта не отображается. И у меня такое бывало. Просто кнопки "+" и "-" нарисованы, и всё. Подозреваю, что что-то с API_KEY.
0
28.09.2014, 22:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2014, 22:22
Привет! Вот еще темы с ответами:

Програмка которая отображает устройства подкличены к Wifi - Программирование Android
Здравствуйте! Возникла потребность в программе которая будет сканировать и отображать устройства которые подключены к беспроводной сети!...

Маркер на google карту - Программирование Android
Помогите пожалуйста в кодом. Прошу сильно не пинать я только учусь) Нужно на гугл карту поставить маркеры по своим координатами с...

Перенос приложения на SD карту - Программирование Android
Как разрешить перенос приложения на SD карту,гугл не хочет выдавать то что надо,помогите.

Не отображает элементы при запуске на эмуляторе. Android Studio - Программирование Android
Подскажите, из-за чего может быть проблема Имеются две активности Empty и Navigation Drawer Activity Все стандартно На первой есть...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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