2012-12-08 19 views
18

私は現在の場所を取得するときにいくつかの問題があります。Googleマップの現在の位置を取得

これはこのGM APIを初めて使用したときのことですが、わからないことがたくさんあります。ここで

は私のコードである、と私は変更したい、問題がある

var geocoder = new google.maps.Geocoder(); 

function initialize() { 
    var latLng = new google.maps.LatLng(-7.7801502, 110.3846387); 
    var map = new google.maps.Map(document.getElementById('mapCanvas'), { 
    zoom: 15, 
    center: latLng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var marker = new google.maps.Marker({ 
    position: latLng, 
    title: 'Ambarrukmo Plaza Yogyakarta', 
    map: map, 
    draggable: true 
    }); 
} 

たい-7.7801502と110.3846387値が自動的にユーザの現在位置に基づいて。それをしてもいいですか?

ご協力いただきありがとうございます。

別の質問: - > GPS搭載のデバイスに基づいてこれらの値を変更するとどうなりますか?

答えて

27

Googleマップで現在のユーザーの現在地を取得することはできません。ただし、Google LoaderのGoogleマップを取得した場合は、google.loader.CurrentLocationを使用してIPに基づいた場所を取得できます。

他の方法は、HTML5 GeoLocation APIを使用することです。

function getLocation() { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
    alert("Geolocation is not supported by this browser."); 
    } 
} 
function showPosition(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    map.setCenter(new google.maps.LatLng(lat, lng)); 
} 
+0

は、ほとんどのブラウザのための安全なHTTPSプロトコルは、今、このコードスニペットは、[説明を含む]質問、(http://meta.stackexchange.com/を解決するかもしれないがHTML5ジオロケーションAPI – ZimSystem

1

GoogleマップAPIの世界に滞在したい、とあなたが使用できるマップ変数を持っていると仮定した場合、

var map = new google.maps.Map(document.getElementById("map-canvas"), 
     mapOptions); 

var myLat = map.center.k; 
var myLng = map.center.B; 

またはあなたが使用することができ、

alert("Lat="+map.center.k); 
alert("Lng="+map.center.B); 
-1
import UIKit 
import GoogleMaps 
import GooglePlaces 
import CoreLocation 

class ViewController: UIViewController,CLLocationManagerDelegate,GMSMapViewDelegate { 

@IBOutlet weak var currentlocationlbl: UILabel! 


var mapView:GMSMapView! 

var locationManager:CLLocationManager! = CLLocationManager.init() 

var geoCoder:GMSGeocoder! 

var marker:GMSMarker! 

var initialcameraposition:GMSCameraPosition! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.mapView = GMSMapView() 
    self.geoCoder = GMSGeocoder() 
    self.marker = GMSMarker() 
    self.initialcameraposition = GMSCameraPosition() 

    // Create gms map view-------------> 
    mapView.frame = CGRect(x: 0, y: 150, width: 414, height: 667) 
    mapView.delegate = self 
    mapView.isMyLocationEnabled = true 
    mapView.isBuildingsEnabled = false 
    mapView.isTrafficEnabled = false 
    self.view.addSubview(mapView) 

    // create cureent location label----------> 

    self.currentlocationlbl.lineBreakMode = NSLineBreakMode.byWordWrapping 
    self.currentlocationlbl.numberOfLines = 3 
    self.currentlocationlbl.text = "Fetching address.........!!!!!" 

    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation 
    if locationManager.responds(to: #selector(CLLocationManager.requestAlwaysAuthorization)) 
    { 
     self.locationManager.requestAlwaysAuthorization() 
    } 
    self.locationManager.startUpdatingLocation() 

    if #available(iOS 9, *) 
    { 
    self.locationManager.allowsBackgroundLocationUpdates = true 
    } 
    else 
    { 
     //fallback earlier version 
    } 
    self.locationManager.startUpdatingLocation() 


    self.marker.title = "Current Location" 
    self.marker.map = self.mapView 


    // Gps button add mapview 

    let gpbtn:UIButton! = UIButton.init() 
    gpbtn.frame = CGRect(x: 374, y: 500, width: 40, height: 40) 
    gpbtn.addTarget(self, action: #selector(gpsAction), for: .touchUpInside) 
    gpbtn.setImage(UIImage(named:"gps.jpg"), for: .normal) 
    self.mapView.addSubview(gpbtn) 
    } 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    var location123 = CLLocation() 

    location123 = locations[0] 

    let coordinate:CLLocationCoordinate2D! = CLLocationCoordinate2DMake(location123.coordinate.latitude, location123.coordinate.longitude) 

    let camera = GMSCameraPosition.camera(withTarget: coordinate, zoom: 16.0) 

    self.mapView.camera = camera 
    self.initialcameraposition = camera 
    self.marker.position = coordinate 
    self.locationManager.stopUpdatingLocation() 

} 


func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) 
{ 
    self.currentAddres(position.target) 
} 

func currentAddres(_ coordinate:CLLocationCoordinate2D) -> Void 
{ 
    geoCoder.reverseGeocodeCoordinate(coordinate) { (response, error) in 

     if error == nil 
     { 
      if response != nil 
      { 

       let address:GMSAddress! = response!.firstResult() 

       if address != nil 
       { 
        let addressArray:NSArray! = address.lines! as NSArray 

        if addressArray.count > 1 
        { 
         var convertAddress:AnyObject! = addressArray.object(at: 0) as AnyObject! 
         let space = "," 
         let convertAddress1:AnyObject! = addressArray.object(at: 1) as AnyObject! 
         let country:AnyObject! = address.country as AnyObject! 

         convertAddress = (((convertAddress.appending(space) + (convertAddress1 as! String)) + space) + (country as! String)) as AnyObject 

         self.currentlocationlbl.text = "\(convertAddress!)".appending(".") 
        } 
        else 
        { 
         self.currentlocationlbl.text = "Fetching current location failure!!!!" 
        } 

       } 


      } 
     } 
    } 
} 

...

+0

のために必要です質問/ 114762/explain-entire-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – Isma

関連する問題