M
M
Mikhail Semyonov2015-07-28 18:50:48
Yandex
Mikhail Semyonov, 2015-07-28 18:50:48

API Yandex Map 2 geoobject.Point flies along with the map in the center. How to attach a Point to a specific location?

Here is the code:

ymaps.ready(function () {

      var gObjects = [{
        "type": "Feature",
        "name": "",
        "style": "#id1422517012444625547",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [37.58193, 55.91089],
            [37.58121, 55.91116],
            [37.5809, 55.91128],
            [37.5807, 55.91142],
            [37.58077, 55.91167],
            [37.58075, 55.91185],
            [37.58067, 55.9121],
            [37.5805, 55.91234],
            [37.58065, 55.91248],
            [37.58025, 55.91258],
            [37.57994, 55.91282],
            [37.57965, 55.91298],
            [37.57715, 55.91418],
            [37.57689, 55.91442],
            [37.57631, 55.91459],
            [37.57428, 55.91556],
            [37.572, 55.91664],
            [37.57098, 55.91729],
            [37.57064, 55.91748],
            [37.57033, 55.91771],
            [37.57006, 55.91842],
            [37.56986, 55.91894],
            [37.56978, 55.91904],
            [37.56967, 55.91909],
            [37.56951, 55.9191],
            [37.56673, 55.91746],
            [37.56581, 55.91698],
            [37.5653, 55.91671],
            [37.56483, 55.91644],
            [37.56459, 55.91656]
          ]
        }
      }, {
        "type": "Feature",
        "name": "Офис и склад Аль-трейд",
        "style": "#id1422515632652808079",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [37.56105, 55.91926],
            [37.56338, 55.91905],
            [37.56316, 55.91831],
            [37.56377, 55.91826],
            [37.56348, 55.91739],
            [37.56388, 55.91735],
            [37.56353, 55.91618],
            [37.56027, 55.91649],
            [37.56105, 55.91926]
          ]
        }
      }, {
        "type": "Feature",
        "name": "Внутренняя сторона МКАД",
        "style": "#id1422516247783473813",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [37.58141, 55.91078],
            [37.58487, 55.91036],
            [37.58811, 55.90978],
            [37.59008, 55.90928],
            [37.59059, 55.90895],
            [37.59033, 55.9087],
            [37.58968, 55.90858],
            [37.5882, 55.9083],
            [37.5879, 55.90846],
            [37.58802, 55.90846],
            [37.58781, 55.90869],
            [37.58923, 55.9106],
            [37.5896, 55.91076],
            [37.59006, 55.9108],
            [37.59041, 55.91076],
            [37.59077, 55.9106],
            [37.59099, 55.91042],
            [37.59104, 55.91022],
            [37.59057, 55.90978],
            [37.59, 55.90968],
            [37.58931, 55.90971]
          ]
        }
      }, {
        "type": "Feature",
        "name": "Внешняя сторона МКАД",
        "style": "#id1422517027907995963",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [37.59244, 55.90892],
            [37.58965, 55.90962],
            [37.58677, 55.91027],
            [37.58453, 55.91063],
            [37.58173, 55.91093]
          ]
        }
      }, {
        "type": "Feature",
        "name": "Из центра Москвы",
        "style": "#id1422517318711839074",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [37.58723, 55.90274],
            [37.5874, 55.90782],
            [37.58789, 55.90882]
          ]
        }
      }, {
        "type": "Feature",
        "name": "КПП №1",
        "style": "#id1422516525983358305",
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [37.56457, 55.91648],
              [37.56463, 55.91652],
              [37.56457, 55.91648]
            ]
          ]
        }
      },
      {
        "type": "Feature",
        "name": "Офис и склад Аль-трейд",
        "style": "twirl#yellowDotIcon",
        "number": "",
        "geometry": {
          "type": "Point",
          "coordinates": 
        }
      }];

      var qStyles =  {
        "id1422517012444625547": {
          "strokeColor": "00339a99",
          "strokeWidth": 5
        },
        "id1422515632652808079": {
          "strokeColor": "00339a99",
          "strokeWidth": 5
        },
        "id1422516247783473813": {
          "strokeColor": "00339a99",
          "strokeWidth": 5
        },
        "id1422517027907995963": {
          "strokeColor": "00339a99",
          "strokeWidth": 5
        },
        "id1422517318711839074": {
          "strokeColor": "00339a99",
          "strokeWidth": 5
        },
        "id1422516525983358305": {
          "strokeColor": "ff0000e6",
          "strokeWidth": 5,
          "outline": "1",
          "fill": "1",
          "fillColor": "ff000099"
        }
      };

      
          
      var map = new ymaps.Map('map-frame', {
        center: [55.917650000000002, 37.562049999999999], //[55.912428,37.579655],//55.910896,37.575208	
        zoom: 15,
        type: "yandex#satellite",
        behaviors: ['scrollZoom', 'drag'],
        //bounds: [ [55.899610000000003, 37.550780000000003], [55.921309999999998, 37.60228] ],
        //strictBounds: true
      }, {
        autoFitToViewport: "always",
        geoObjectStrokeOpacity: 1,
        geoObjectFillOpacity: 1,
        geoObjectStrokeColor: "ff0000e6",
        geoObjectStrokeWidth: 5,
        geoObjectFillColor: "ff000099",
        geoObjectIconContentLayout: ymaps.templateLayoutFactory.createClass("$[properties.number]"),
        geoObjectBalloonContentBodyLayout: ymaps.templateLayoutFactory.createClass("$[properties.name]")
      } );

      map.controls.add("mapTools")
        // Добавление кнопки изменения масштаба 
        .add("zoomControl")
        // Добавление списка типов карты
        .add("typeSelector");
      

      for (var H in qStyles) {
        if (qStyles.hasOwnProperty(H)) {
          ymaps.option.presetStorage.add("ctor#" + H, qStyles[H])
        }
      }
      for( var o = 0; o < gObjects.length; o++ ) {
        var gO = gObjects[o];
        for( var C in gO.geometry.coordinates ) {
          if( gO.geometry.type == 'Polygon' ) {
            for( var M in gO.geometry.coordinates[C] ) {
              gO.geometry.coordinates[C][M] = [ gO.geometry.coordinates[C][M][1], gO.geometry.coordinates[C][M][0] ];
            }
          } else {
            gO.geometry.coordinates[C] = [ gO.geometry.coordinates[C][1], gO.geometry.coordinates[C][0] ];
          }
          
        }

        if( gO.geometry.type == 'Point' ) {
          gO.geometry = new ymaps.geometry.Point( gO.geometry.coordinates, { pixelRendering: "static" } );
          gO.geometry.options.set( 'pixelRendering', 'static' );
        }
        var g1 = new ymaps.GeoObject({
          geometry: gO.geometry,
          properties: {
            name: gO.name,
            number: gO.number,
            pixelRendering: "static"
          }
        }, {
          pixelRendering: "static",
          preset: gO.style.indexOf("#") === 0 ? "ctor" + gO.style : gO.style
        } );
        g1.options.set( 'pixelRendering', 'static' );
        g1.geometry.events.add( 'change', function( e ) {
          console.log( e );
        } );
        map.geoObjects.add( g1 );
        gObjects[o] = g1;
      }

      map.setBounds( [ [55.899610000000003, 37.550780000000003], [55.921309999999998, 37.60228] ] );
        
      });

The map loads, all the elements are created, but the Point (which should just point to the building) moves with the map and is always in the middle of it.
I set pixelRendering to static - it doesn't help. Maybe somehow I’m doing it wrong (I added it wherever I could).
Who will tell you what the jamb is, or maybe you can put a pointer to the building somehow differently?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Mikhail Semyonov, 2015-07-28
@muxahuk1214

Found an error.
I have a loop to flip the coordinates (because they are given in reverse order in the gObjects object) and the coordinates to Point are different from others in this object. It turned out that they were not set, so it flew in the center ..

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question