0

Googleマップにいくつかのマーカーを表示しようとしており、ユーザーがそのマーカーをクリックすると、マップをマーカーの中央に配置できるようにします。

ただし、ユーザーが任意のマーカーをクリックすると、コードで作成した最後のマーカーがマップの中心になります。

ここに私が使用している完全なコードがあります:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0; padding: 0 }
  #map_canvas { height: 100% }
</style>
<script type="text/javascript"
  src="http://maps.googleapis.com/maps/api/js?key=MY_API_KEY&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myOptions = {
  center: new google.maps.LatLng(-34, 150),
  zoom: 8,
  mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
    myOptions);

var myLatLng = new google.maps.LatLng(34,-150);

var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    title:'test' + 1
});

google.maps.event.addListener(marker, 'click', function(){map.setCenter(marker.getPosition());});

myLatLng = new google.maps.LatLng(20,-87);

var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    title:'test' + 2
});

google.maps.event.addListener(marker, 'click', function(){map.setCenter(marker.getPosition());});

}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

これにしばらく時間を費やし、Google マップの API リファレンスを調べましたが、なぜ機能しないのかわかりません。

洞察をいただければ幸いです-ありがとう。

4

1 に答える 1

2
mMap.setOnMarkerClickListener(new OnMarkerClickListener() 
      {
          @Override
          public boolean onMarkerClick(Marker marker)
          {
              int yMatrix = 200, xMatrix =40;

              DisplayMetrics metrics1 = new DisplayMetrics();
              getWindowManager().getDefaultDisplay().getMetrics(metrics1);
              switch(metrics1.densityDpi)
              {
              case DisplayMetrics.DENSITY_LOW:
                  yMatrix = 80;
                  xMatrix = 20;
                  break;
              case DisplayMetrics.DENSITY_MEDIUM:
                  yMatrix = 100;
                  xMatrix = 25;
                  break;
              case DisplayMetrics.DENSITY_HIGH:
                  yMatrix = 150;
                  xMatrix = 30;
                  break;
              case DisplayMetrics.DENSITY_XHIGH:
                  yMatrix = 200;
                  xMatrix = 40;
                  break;
              case DisplayMetrics.DENSITY_XXHIGH:
                  yMatrix = 200;
                  xMatrix = 50;
                  break;
              }

              Projection projection = mMap.getProjection();
              LatLng latLng = marker.getPosition();
              Point point = projection.toScreenLocation(latLng);
              Point point2 = new Point(point.x+xMatrix,point.y-yMatrix);

              LatLng point3 = projection.fromScreenLocation(point2);
              CameraUpdate zoom1 = CameraUpdateFactory.newLatLng(point3);
              mMap.animateCamera(zoom1);
              marker.showInfoWindow();
              return true;
          }
      });
于 2013-10-14T11:37:12.767 に答える