Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

карта не отображается если ключ расположен в отдельном файле ресурсов #63

Open
marwinxxii opened this issue Sep 15, 2012 · 6 comments

Comments

@marwinxxii
Copy link

Вместо карты отображается серое поле с клетками если ключ хранить в виде строки ресурсов.

Пример

<ru.yandex.yandexmapkit.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:apiKey="@string/map_key" />

Android 2.2.1 и android 4.0. Могу предоставить полный пример проекта с данной проблемой

@mksaint13
Copy link
Member

Да сейчас это не делается, возможно будет в след. обновлениях

@marwinxxii
Copy link
Author

Мне кажется, что было бы неплохо отразить это в ридми. Я, к сожалению, убил немало времени чтобы осознать почему у меня карта не отображается.

@mksaint13
Copy link
Member

Хорошо спасибо подумаем

@shaubert
Copy link

Странно, что такая элементарная задача, время решения которой не больше пяти-десяти минут, остается открытой в трекере больше 4 месяцев. Печально даже не то, что руководство Яндекса таким образом показывает свою незаинтересованность в проекте, а то, что из-за катастрофически неудачной структуры проекта, состоящего из нативной либы и наполовину обфусцированного джарника, невозможно сделать пулл реквест, который мог бы помочь тем, кто пользуется вашим мэпкитом.

Ниже пример кода, как можно заставить апи ключ загружаться из ресурсов. Для этого нужно отнаследоваться от MapView и перегрузить метод получения ключа. Точно работает на 4.2. К сожалению, у меня сейчас нет возможности проверить на устройствах с более ранней версией ос.

private static final String RESOURCE_PREFIX = "@";

@Override
public String getApiKey() {
    String apiKey = super.getApiKey();
    if (apiKey != null && apiKey.startsWith(RESOURCE_PREFIX)) {
        String strResName = apiKey.substring(RESOURCE_PREFIX.length());
        try {
            int apiKeyResourceId = Integer.parseInt(strResName);
            if (apiKeyResourceId > 0) {
                String apiKeyFromResorce = getContext().getResources().getString(apiKeyResourceId);
                return apiKeyFromResorce;
            }
        } catch (Exception ex) {
            //return api key from super
        }
    }
    return apiKey;
}

@kovai
Copy link

kovai commented Dec 19, 2013

Мда... Я вот тоже кучу времени промучился.
Спасибо огромное за подсказку, ребята!

@Tsymlov
Copy link

Tsymlov commented Jan 5, 2016

Спасибо большое! Полтора часа искал решение. Кто бы мог подумать...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants