Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 地理定位可以在笔记本电脑上使用,但不能在智能手机上使用_Javascript_R_Shiny_Leaflet - Fatal编程技术网

Javascript 地理定位可以在笔记本电脑上使用,但不能在智能手机上使用

Javascript 地理定位可以在笔记本电脑上使用,但不能在智能手机上使用,javascript,r,shiny,leaflet,Javascript,R,Shiny,Leaflet,我创建了一个闪亮的应用程序,用户可以从他们希望在地图上显示的地址列表(第一个选项卡)中进行选择(第二个选项卡)。为了让他们更容易,我还尝试获取他们的地理位置,并将其显示在地图上。这适用于笔记本电脑,但不适用于移动设备。当我在笔记本电脑上启动应用程序时,浏览器会要求我(弹出窗口)共享我的位置。在智能手机上,这种情况不会发生。你知道为什么吗 这是我的代码: 地理位置部分在UI中的“#从用户获取地理位置”下,在服务器中的“#添加设备位置”下 库(闪亮) 图书馆(shinyjs) 图书馆(单张) 图书馆

我创建了一个闪亮的应用程序,用户可以从他们希望在地图上显示的地址列表(第一个选项卡)中进行选择(第二个选项卡)。为了让他们更容易,我还尝试获取他们的地理位置,并将其显示在地图上。这适用于笔记本电脑,但不适用于移动设备。当我在笔记本电脑上启动应用程序时,浏览器会要求我(弹出窗口)共享我的位置。在智能手机上,这种情况不会发生。你知道为什么吗

这是我的代码:
地理位置部分在UI中的“#从用户获取地理位置”下,在服务器中的“#添加设备位置”下

库(闪亮)
图书馆(shinyjs)
图书馆(单张)
图书馆(dplyr)
图书馆(sp)
#####################################################################################################
##服务器#####
#####################################################################################################

服务器您是否使用
https://
URL从智能手机访问应用程序?否。两次都是
http://
URL。使用
https://
似乎根本不起作用您可以在检查浏览器设置时检查应用程序,可能会因默认情况而拒绝在浏览器设置中启用地理位置。其他人使用地理定位的应用程序没有问题。它也不适用于其他人的手机。
  library(shiny)
  library(shinyjs)
  library(leaflet)
  library(dplyr)
  library(sp)


  #####################################################################################################
  ## Server                                                                                       #####
  #####################################################################################################

  server <- function(input, output) {

    ## data frame (normally a bigger data frame) ## 
    df <- data.frame(lng = c(9.615772, 9.53677), lat = c(47.78331, 47.15224), label = c("Adress 1", "Adress 2"))


    ## render map ##
     output$mymap <- renderLeaflet({
      # join input # 
      df_coord <- right_join(df, data.frame(label= input$address),
                              by="label"
                  )

      # add device location #
      if(!is.null(input$devicelat)){
        you <- data.frame(lng=input$devicelong, lat=input$devicelat, label="that's you")
        df_coord <- bind_rows(df_coord, you)
      }


      # convert to spacial points #
      data <- SpatialPointsDataFrame(coords=df_coord[1:2], data = df_coord)

      # create map #
      mymap <- leaflet(data=data) %>%
        addTiles() %>%
        addMarkers(lng= ~lng,
                   lat= ~lat,
                   popup= ~label
        )

      mymap
    })

  }



  #####################################################################################################
  ## User Interface                                                                               #####
  #####################################################################################################

  ui <- navbarPage(title = "amazing map",
                   ## TAB CHOOSE ADDRESS ##
                   tabPanel(title= "choose address",
                            # get geolocation from user #
                            tags$script('
                                        $(document).ready(function () {
                                          navigator.geolocation.getCurrentPosition(onSuccess, onError);

                                          function onError (err) {
                                          Shiny.onInputChange("geolocation", false);
                                          }

                                         function onSuccess (position) {
                                            setTimeout(function () {
                                                var coords = position.coords;
                                                console.log(coords.latitude + ", " + coords.longitude);
                                                Shiny.onInputChange("geolocation", true);
                                                Shiny.onInputChange("devicelat", coords.latitude);
                                                Shiny.onInputChange("devicelong", coords.longitude);
                                            }, 1100)
                                        }
                                        });
                                      '),
                            fluidRow(
                              column(6,
                                     offset = 3,
                                     wellPanel(
                                       checkboxGroupInput("address",
                                                          label = h3("Choose address to display"),
                                                          choiceNames = as.character(df$label),
                                                          choiceValues = df$label
                                       )
                                     )
                              )
                            )
                   ),
                   ## TAB MAP ##
                   tabPanel(title= "see the address",
                            tags$head(tags$style(HTML("#mymap {height: calc(100vh - 81px) !important;}")
                                      )),
                            fluidRow(leafletOutput("mymap", width =  "100%"))
                            )

  )


  shinyApp(ui = ui, server = server)