2016-04-16 3 views
0

Я хотел бы сделать маркеры, которые не перемещаются, когда карта вращается, точно так же, как и полилинии. Моя цель - дать маркеру единую ориентацию, которая никогда не изменяется даже тогда, когда происходят извлечения.Как добавить статический маркер карты в ЗДЕСЬ карты Android sdk?

Я пробовал с каждым типом маркера, но я не могу получить желаемый эффект.

Любой вид помощи был бы оценен, так как я застрял здесь действительно долгие часы

+0

Если я получу это правильно, вы хотите избежать того, чтобы маркер продолжал вращаться к вам, правильно? Я не уверен, что вы можете сделать это с помощью маркеров. Единственное, что я могу сейчас подумать, будет использовать [MapLocalModel] (https://developer.here.com/mobile-sdks/documentation/android-hybrid-plus/topics_api_nlp_hybrid_plus/com-here-android-mpa-mapping -maplocalmodel.html). Но тогда вам нужно поставить модель и текстуру самостоятельно – SirBif

+0

Спасибо! Я посмотрел, что вы предложили, и похоже, что это единственный способ добиться того, что я хочу сделать. Однако я считаю, что это очень сложно для такой простой вещи ... ЗДЕСЬ должно действительно сделать это проще, как на картах Google. Теперь я должен понять, как работают модели и текстуры. Спасибо в любом случае –

+0

MapLocalModel в основном предназначен для рисования сложных текстурированных или затененных объектов. Мы используем его, чтобы добавить в карту забавные вещи, такие как автомобили и 3D-объекты. Пожалуйста, используйте класс MapMarker, как это было предложено в моем ответе. –

ответ

0

Вы можете нарисовать простой прямоугольник с передним и задним лицом стороны текстурированные следующим образом:

// Two triangles 
    FloatBuffer buff = FloatBuffer.allocate(12); 
    buff.put(0- delta); 
    buff.put(0- delta); 
    buff.put(1.f); 

    buff.put(0 + delta); 
    buff.put(0 - delta); 
    buff.put(1.f); 

    buff.put(0 - delta); 
    buff.put(0 + delta); 
    buff.put(1.f); 

    buff.put(0 + delta); 
    buff.put(0 + delta); 
    buff.put(1.f); 

    // Two triangles to generate the rectangle. Both front and back face 
    IntBuffer vertIndicieBuffer = IntBuffer.allocate(12); 
    vertIndicieBuffer.put(0); 
    vertIndicieBuffer.put(2); 
    vertIndicieBuffer.put(1); 
    vertIndicieBuffer.put(2); 
    vertIndicieBuffer.put(3); 
    vertIndicieBuffer.put(1); 
    vertIndicieBuffer.put(0); 
    vertIndicieBuffer.put(1); 
    vertIndicieBuffer.put(2); 
    vertIndicieBuffer.put(1); 
    vertIndicieBuffer.put(3); 
    vertIndicieBuffer.put(2); 

    // Texture coordinates 
    FloatBuffer textCoordBuffer = FloatBuffer.allocate(8); 
    textCoordBuffer.put(0.f); 
    textCoordBuffer.put(0.f); 
    textCoordBuffer.put(1.f); 
    textCoordBuffer.put(0.f); 
    textCoordBuffer.put(0.f); 
    textCoordBuffer.put(1.f); 
    textCoordBuffer.put(1.f); 
    textCoordBuffer.put(1.f); 

    // The LocalMesh itself. 
    LocalMesh mesh = new LocalMesh(); 
    mesh.setVertices(buff); 
    mesh.setVertexIndices(vertIndicieBuffer); 
    mesh.setTextureCoordinates(textCoordBuffer); 

    MapLocalModel model = new MapLocalModel(); 
    model.setMesh(mesh); 
    model.setDynamicScalingEnabled(true); 
    model.setAnchor(new GeoCoordinate(LATITUDE, LONGITUDE, 0.0)); 

Присоединить изображение к нему для текстуры и использовать MapRenderLisener # onPredraw() для изменения высоты и рыскания объект локальной модели, чтобы следить за камерой.

+0

Спасибо, это именно то, что мне нужно! –

0

Объект MapMarker является то, что вы ищете? Он привязан к тому месту, которое вы ему даете, и оно всегда будет отображаться на экране 2d, независимо от наклона и поворота, которое вы применяете к карте.

Надеюсь, это поможет.

+0

Ну, по ссылке, которую вы только что дали мне, это наоборот: «Карта обрабатывает правильное размещение значков на экране, а также панорамирование и поворот». MapMarker будет вращаться, если карта вращается, и я не вижу никаких способ отключить это ... –

+0

MapMarker не вращается, он рисуется в плоском 2-дюймовом экране. Я считаю, что наша документация в этом смысле немного запутанна. Он должен указать, что он «привязан» к GeoCoordinate и всегда обращен к фронту независимо от наклона или ориентации карты. –

+0

Да, это всегда, передняя сторона, и я хочу, чтобы маркер не делал этого, потому что я пытаюсь добавить конкретное изображение с определенным углом (возможно, я тоже не был ясен). Если есть способ сделать это без MapLocalModel, пожалуйста, скажите мне, как, я бы очень признателен. Спасибо –