2017-03-09 1 views
0

플로팅 마커를 만드는 방법이 있습니다. 위치를 선택하고 센터보기를 유지하고지도를 스크롤 할 수 있습니까? 나는 자바 스크립트 버전플로팅 마커 만들기 Google지도 iOS

function initialize() { 
 
    var crosshairShape = { 
 
    coords: [0, 0, 0, 0], 
 
    type: 'rect' 
 
    }; 
 
    var latlng = new google.maps.LatLng(54.62279178711505, -5.895538330078125); 
 
    var myOptions = { 
 
    zoom: 12, 
 
    center: latlng, 
 
    mapTypeId: google.maps.MapTypeId.SATELLITE, 
 
    mapTypeControlOptions: { 
 
     style: google.maps.MapTypeControlStyle.DROPDOWN_MENU 
 
    } 
 
    }; 
 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
 
    var marker = new google.maps.Marker({ 
 
    map: map, 
 
    }); 
 
    document.getElementById('coordinates').innerHTML = "<b>center coordinates</b>: " + map.getCenter().toUrlValue(6) 
 
    google.maps.event.addListener(map, 'center_changed', function() { 
 
    document.getElementById('coordinates').innerHTML = "<b>center coordinates</b>: " + map.getCenter().toUrlValue(6); 
 
    }); 
 
    marker.bindTo('position', map, 'center'); 
 
} 
 
google.maps.event.addDomListener(window, 'load', initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 500px; 
 
    width: 500px; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry,places&ext=.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> 
 
<div id="map_canvas" style="width:750px; height:450px; border: 2px solid #3872ac;"></div> 
 
<div id="coordinates"></div>

이 이미 구현 응용 프로그램입니다,하지만 난 정말 어떻게 할 수있는 단서가없는 발견했다. 그 마커는 우리가 좌표 취득 (GMSPlace 또는 좌표) 수 중심보기 계속 여기 내 요점은

Center marker

는, 모든 사용자가지도를 스크롤 이미지를입니다.

도움이나 단서를 주시면 감사하겠습니다. 정말 고맙습니다!

답변

1

: 그럼 구글은 didChangeCameraPosition 또는 idleAtCameraPosition 대리자를 매핑이 코드를 구현합니다.

는 이미지 뷰를 만드는 방법 :

UIImageView *pin = [[UIImageView alloc] initWithFrame(0,0,10,10)]; 
pin.center = self.view.center; 
pin.image = [UIImage imageNamed:@"pin"]; 
[self.view addSubview:pin]; 
[self.view bringSubviewToFront:pin]; 

좌표 얻으려면 :

-(void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position 
{ 
CGPoint point = pin.center; 
CLLocationCoordinate2D coor = [mapView.projection coordinateForPoint:point]; 
CGFloat longitude = coor.longitude; 
CGFloat latitude = coor.latitude; 
} 
3

나는 늘 모두를 쓰기 만 :

전혀이 마커를 사용 해달라고;) 단지 일반있는 UIView를 중심으로지도의 하위 뷰 ..로 추가 사용합니다.

및 중심 좌표는 중심 코드 아래

+0

너무 감사합니다, Daij-Djan @! –

2

당신을 도움이 가시 광선 영역의 좌표입니다.

// Call this function from -viewdidload with valid GMSMapView input. 
- (UIImageView *)addMarkerOnMapViewCenter:(GMSMapView *)mapView 
{ 
    UIView *vwMapParentView = mapView.superview; 
    UIImageView *vwMarker = [UIImageView new]; 
    [vwMarker setFrame:(CGRect){0,0,20,40}]; 
    // Customize the Background color as per your need. 
    [vwMarker setBackgroundColor:[UIColor greenColor]]; 
    // Drop an icon named markerIcon.png in your project bundle 
    [vwMarker setImage:[UIImage imageNamed:@"markerIcon.png"]]; 
    [vwMarker setCenter:(CGPoint){vwMapParentView.center.x,(vwMapParentView.center.y - vwMarker.frame.size.height)}]; // if needed subtract navigation bar height as well as per the requirement. 
    [vwMapParentView addSubview:vwMarker]; 
    [vwMapParentView bringSubviewToFront:vwMarker]; 
    return vwMarker; 
} 
// And then,Implement this GMSMapView's delegate method. 
- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position 
{ 
    CLLocationCoordinate2D target = position.target; 
    NSLog(@"%f : %f",target.latitude,target.longitude); 
} 

희망 하시겠습니까?

감사합니다. Naresh.

1

Daij-Djan으로 말하면 마커로 추가하지 마십시오. 그냥 평범한 UIView/UIImageView지도의 하위 뷰로 추가 할 수 있습니다. 내가지도보기의 중앙에 이미지를 추가 한 것과 그 좌표와 같은 사용자 정지 스크롤 걸릴 것

- (void) mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position 
{ 
    CGPoint point = mapView.center; 
    CLLocationCoordinate2D coor = [mapView.projection coordinateForPoint:point]; 
}